[HN Gopher] Frink
___________________________________________________________________
Frink
Author : lisper
Score : 202 points
Date : 2025-03-21 19:39 UTC (1 days ago)
(HTM) web link (frinklang.org)
(TXT) w3m dump (frinklang.org)
| timewizard wrote:
| I present you, if you're into this sort of thing, one of the
| snarkiest files on the internet.
|
| https://frinklang.org/frinkdata/units.txt
|
| Alan's editorializing on the nature of radians and hertz is my
| favorite thing.
| camtarn wrote:
| Haha, wow. And he really has it in for the candela too. Thanks
| for pointing to this, I would never have thought to look here,
| but it's an excellent read.
| photonthug wrote:
| // Alan's editorializing: // I think
| the candela is a scam, and I am completely
| // opposed to it. Some good-for-nothing lighting
| "engineers" // or psychologists
| probably got this perceptually-rigged //
| abomination into the whole otherwise scientific endeavor.
| // // What an unbelievably useless and
| stupid unit. Is light // at
| 540.00000001 x 10^12 Hz (or any other frequency) zero
| // candela? Is this expected to be an impulse function at
| // this frequency? Oh, wait, the Heisenberg Uncertainty
| // Principle makes this impossible. No mention for
| // correction (ideally along the blackbody curve) for other
| // wavelengths? Damn you, 16th CGPM! Damn you all to
| hell! //
| spcebar wrote:
| > // I dislike having a prefixed unit as the base reference.
| What a horrible decision. Why don't you just have it go to ten
| and make ten a little louder?
|
| Really delightful.
| mananaysiempre wrote:
| That question (regarding the unit of mass, not the volume
| control) does apparently have an answer[1,2], and the answer
| (if true) is really funny: this was in fact the original
| plan, and the proposed unit was called the grave[3]
| (pronounced "grahv"). Then the French Revolution came and
| that name's similarity to the word _grave_ (count, the noble
| title, from German; cf. English _margrave_ ) led to it being
| superseded by the gram.
|
| I don't like the reference I have, though, so take this whole
| story with a grain of salt.
|
| [1] https://phys.libretexts.org/Courses/Prince_Georges_Commun
| ity...
|
| [2] https://physics.stackexchange.com/questions/64562
|
| [3] https://en.wikipedia.org/wiki/Grave_(unit)
| mananaysiempre wrote:
| There are other contenders if you like your snark on the ranty
| side. // At this point, I'd like to take a
| moment to speak to you about the Adobe PSD format.
|
| https://github.com/gco/xee/blob/4fa3a6d609dd72b8493e52a68f31...
| defaultcompany wrote:
| // Beware the SI's broken definition // of Hz. You
| should treat the radian as being correct, as a fundamental
| // dimensionless property of the universe that falls out of
| pure math like // the Taylor series for sin[x], and you
| should treat the Hz as being a // fundamental property
| of incompetence by committee.
|
| This is all quite entertaining.
| randomNumber7 wrote:
| This is gold.
|
| > In other words, if you use the Hz in the way it's currently
| defined by the SI, as equivalent to 1 radian/s, you can point
| to the SI definitions and prove that you follow their
| definitions precisely. And your physics teacher will _still_
| fail you and your clients will think you 're completely
| incompetent because 1 Hz = 2 pi radians/s. And it has for
| centuries. You are both simultaneously both right and both
| wrong. You cannot win. You are perfectly right. You are
| perfectly wrong. You look dumb and unreasonable. The person
| arguing the opposite looks dumb and unreasonable.
| forgotpwd16 wrote:
| Huh? Seems this quote confuses correspondence and
| equivalence. A frequency f = 1 Hz = 1 s^-1 (aka cycle/s !=
| rad/s) corresponds to an angular frequency o = 2p rad/s (o
| = 2p f) but they're distinct concepts and quantities. The
| Hz was introduced in SI with all those considered.
| Basically both statements "1 Hz = 1 rad/s" and "1 Hz = 2p
| rad/s" are wrong. The only dumb is this quote tbh.
| bradrn wrote:
| The point being made in that file is really that, if you
| take the SI definitions literally, 'cycles' and 'radians'
| end up both being dimensionless and equal to 1, which is
| stupid.
| nkrisc wrote:
| Looking at the sample calculations, isn't the first example
| missing the temperature of the water?
|
| https://frinklang.org/#SampleCalculations
| mbrubeck wrote:
| units.txt defines `water` like this: water :=
| gram / cm^3 // Standard density of water (defined)
|
| 1 g/cm^3 is the maximum density of water at standard pressure
| (1 atm), which it reaches at 3.98degC.
|
| (Or at least, that _used_ to be true by definition. Using the
| current definition of the kilogram, and the latest measurements
| of water density, the maximum density is actually closer to
| 0.99997 g /cm^3.)
| nkrisc wrote:
| I see, that makes sense now.
| synapsomorphy wrote:
| Interesting project. I use command line Qalculate [1] for this
| (has a very similar feature set to Frink AFAICT) and Pint [2] for
| scripting. I feel like unit-aware calculators are hugely
| underused by physical engineers, it's the same idea and benefit
| as type safety but they're virtually unheard of, everyone just
| uses excel. Having guaranteed dimensional correctness is so great
| for the early design stage, it makes it a lot easier to explore
| the problem space.
|
| [1] https://qalculate.github.io/ [2]
| https://pint.readthedocs.io/en/stable/
| timewizard wrote:
| I use the gem 'ruby-units' with "irb" on the command line. It's
| an exceptionally useful library.
| stevage wrote:
| Is this still true if you're using metric?
|
| Just curious, as the Frink examples were all imperial. And
| examples like `10 feet 12 feet 8 feet -> gallons` are much less
| compelling in metric (eg, 3 metres x 4 metres x 2 metres in
| cubic metres is, uh, 24 cubic metres...)
| genter wrote:
| There's lots of metric units that aren't obvious when
| multiplied. For example, watts = ohms * amps^2 (very
| important if you want to calculate how much heat a mosfet is
| going to dissipate.)
| synapsomorphy wrote:
| Dunno about Frink but both qalc and pint allow any units and
| mixing and matching, in qalc you can do something like `1in^2
| * 1m to gal` or `1 ly / fortnight to mph` and get as complex
| as you want. I use metric except when converting to vendor
| units for component speccing.
| ericyd wrote:
| IMO dimensional analysis is still useful even if unit
| conversions are more compatible.
| Y_Y wrote:
| I agree with this sentiment, and in fact have always
| thought of it as analogous to type-checking (which must
| programmers benefit from to some extent).
|
| If you use something with a sufficiently flexible type
| system you can combine these benefits, for example Haskell
| will let you mix physical units into the type system and
| have them statically checked:
| https://wiki.haskell.org/Physical_units
| schiffern wrote:
| >Just curious, as the Frink examples were all imperial.
|
| No worries. Internally Frink immediately converts everything
| into SI, actually.
|
| Fortunately Frink converts with _zero_ loss of precision,
| because the language supports exact rational numbers. The
| unit definitions are all given in exact rationals, since they
| are (legally) defined as exact multipliers. For readability
| Frink introduces the "ee" ('exact exponent') notation, so
| for instance the standard acceleration due to gravity can be
| given as: 9.80665ee0 m/s^2
|
| or (equivalently) in simplest form, as:
| 196133/20000 m s^-2
|
| Frink treats these two quantities as exactly equivalent.
| ginko wrote:
| Talking about Frink alternatives.. Back when I was using
| Windows I really liked SpeQ[1]. The cool thing about that one
| was that you could define values and functions and modify any
| part and it would immediately recalculate everything.
|
| Unfortunately it seems to be abandoned (last release was from
| 2010).
|
| [1] https://speqmath.com/
| anta40 wrote:
| I wonder if there's a similar CLI tool? Nothing against GUI-based
| tool, but easily usable on terminal is plus point.
| dangrie158 wrote:
| Rink: https://github.com/tiffany352/rink-rs/ Is an Open Source
| CLI implementation
| anta40 wrote:
| Ooo nice. Thanks.
| MentalNomad wrote:
| Frink is a CLI tool.
|
| The website/GUI is just there for convenience and/or for people
| to get a taste.
|
| https://frinklang.org/#CommandLineOptions
| johnisgood wrote:
| GNU units.
| vdm wrote:
| https://numbat.dev/doc/comparison.html
| schiffern wrote:
| Oddly enough, this comparison (incorrectly) lists Frink as
| having no available web interface, when in reality Frink has
| both an online REPL version[0] and a Java Applet version.[1]
|
| It also docks Frink with an 'X' because it doesn't have
| "Physical Dimensions," when in reality that's a core feature of
| Frink.
|
| In Numbat you write: dimension Length
|
| whereas in Frink you'd write: length =!= m //
| meter set as default unit for dimension length
|
| I'm not sure this comparison is exactly accurate.
|
| [0] https://frinklang.org/fsp/frink.fsp
|
| [1] https://frinklang.org/FrinkApplet.html
| deng wrote:
| This is interesting, but I doubt anything will ever come up in my
| lifetime that is even close to replacing Emacs Calc for me. I
| still consider it to be the best scientific calculator ever
| written. It's crazy that many Emacs users aren't even aware that
| it exists. It comes with an almost ridiculously extensive manual,
| complete with exercises and everything:
|
| https://www.gnu.org/software/emacs/manual/html_mono/calc.htm...
|
| It's probably overkill for most people, and I'm sad that I don't
| get to use it as much as when I was a student, but it's still a
| beautiful rabbit hole to fall into. And it works in a terminal
| just fine. :-)
| innocentoldguy wrote:
| Thanks, Deng! I'm one of those Emacs users who has been using
| Emacs for years, and I didn't know Emacs Calc existed.
|
| Reading the manual now...
| rrgok wrote:
| A little bit of a tangent: I love the homepage. It includes
| everything I need to know about the language in a single page.
| Features, documentation with code examples and links between
| sections. And everything is one ctrl+f away.
| crazygringo wrote:
| Funny, I'm the exact opposite. It's driving me mad.
|
| Why do I have to scroll down 95% of the way to see some simple
| examples, when that's the first thing I'm interested in?
|
| Why does it start with a list of "features" of like 25
| unorganized bullet points?
|
| Surely the long quotation about European kings belongs in some
| "history" or "origin" section, rather than the first thing I
| need to read, when I'm just trying to figure out if this is a)
| open-source, b) for which operating systems, c) actively
| maintained, and d) for quick calculations or complicated
| modeling?
|
| Why do I have to scroll down a couple of page lengths just to
| get to the table of contents?
|
| This is basically one of the worst landing pages for a project
| I've ever seen. It completely violates the basic principles of
| putting the most important information at the top, of
| organizing content hierarchically (don't _ever_ just put 25
| bullets in a row), and trying to show rather than tell whenever
| possible.
| nqzero wrote:
| this is 100% proprietary and the source code for this isn't
| available: https://frinklang.org/faq.html#OpenSource
|
| i'm open to non-FOSS licenses (and advocate for and use a class
| of them), but in this case 1. afaict, the license offers zero
| rights to the user 2. for me personally, i want more rights for a
| language than for an app, eg mongo
| adius wrote:
| My new go-to language for any calculations is https://numbat.dev.
|
| It's a statically typed programming language for scientific
| computations with first class support for physical dimensions and
| units.
|
| Great ergonomics and a pleasure to use!
| peter_d_sherman wrote:
| This subsection looks like the key to understanding Frink:
|
| https://frinklang.org/#HowFrinkIsDifferent
|
| (That, and _we warmly welcome Frink to the club of computer
| programming languages!_ (as we once did for Perl, Java, PHP,
| Rust, Clojure, Go, Zig, Nim, Python, etc. etc.!))
| owlstuffing wrote:
| I use Java with manifold-units[1] for this. Some examples:
|
| >
|
| // commonly used unit abbreviations e.g., m, ft, hr, mph, etc.
|
| import static manifold.science.util.UnitConstants.*;
|
| ...
|
| Length l = 5m; // 5 meters
|
| Length height = 5 ft + 9.5 in;
|
| Length distance = 80 mph * 2.3 hr;
|
| Force force = 5kg * 9.807 m/s/s; // 49.035 Newtons
|
| Force f = 49.035 kg m/s/s;
|
| force == f // true
|
| force == 49.035 N // true
|
| 1. https://github.com/manifold-
| systems/manifold/tree/master/man...*
___________________________________________________________________
(page generated 2025-03-22 23:01 UTC)