
Frink – A practical calculating tool and programming language - tosh
https://frinklang.org
======
dikaiosune
I hang out in an IRC channel which has/had a bot for Frink, and after
significant flakiness on its part someone decided to build an open-source
alternative (which AFAIK frink is not) in Rust:

[https://github.com/tiffany352/rink-rs](https://github.com/tiffany352/rink-rs)

Seems to work pretty darn well, and it's proven to be super useful.

~~~
mephistoschmalz
I apologize if you used an old version of my IRC bot. It actually tried to
screen-scrape the Frink website and did it badly. There are some sites still
using it. (And, I think, got throttled for abuse, which might explain your
"flakiness".)

There's a newer version of the bot that runs a Frink interpreter on your own
system and it's rock-steady. (I saw another IRC bot that forgot to synchronize
on the Frink interpreter. Don't use that either.)

------
Hondor
Great to see that the author's quite opinionated on date formats. It doesn't
support any of the ridiculous local cultural conventions like MM/dd/yy or
dd/MM/yy but he recommends the unambiguous ISO standard yyyy-MM-dd.

Also: "Last-Modified: Wed, 01 Sep 2004 13:24:52 GMT ... // Alan's
editorializing: Needless to say, this is a stupid format."

Date formats cause me constant struggle because I live in one country, work
for a company based in another, and use services from a third, all with
different local conventions! Somehow every program and website thinks it knows
what date format I want, but that just means I can't reliably transfer a date
from Paypal into a LibreOffice spreadsheet or compare a date in Paypal with a
date on my bank statement and web host.

~~~
jacquesm
, and . is another one that really needs to just die.

------
piotrkubisa
I'd recommend using Google Cache version:
[http://webcache.googleusercontent.com/search?q=cache:https:/...](http://webcache.googleusercontent.com/search?q=cache:https://frinklang.org)
because It takes long time to load website.

------
darklajid
Worth mentioning that F# supports units of measure as well. It doesn't give
you that out of the box experience, but you can use the type system to make
sure that your units are sound/to convert between types.

------
peterisza
Once we attempted to do a very similar thing (calculation with quantities,
matrices, complex numbers, etc) but by extending javascript:
[http://engineerjs.com](http://engineerjs.com)

~~~
Cyph0n
That looks pretty cool! Is it still active? If not, what happened?

~~~
peterisza
No, we lost our motivation. We also wanted the libraries to be user editable
like wiki, but never really finished that.

~~~
Cyph0n
That's too bad. I wish you the best of luck :)

------
hellofunk
Last I checked, the language is not open source so that raises some concerns.
It is hard to take closed source languages seriously.

------
drabbiticus
Similar project in python if that's your jam:

[https://pypi.python.org/pypi/quantities](https://pypi.python.org/pypi/quantities)

------
scotty79
Funny it's not more common in high-level languages. You have types for non-
negative whole numbers, whole numbers, larger whole numbers, not-whole numbers
but imprecise, precise non-whole numbers but you usually can't tell compiler
that one is in meters and one is in kilos and it shouldn't allow you to add
one to the other.

Frink is one of the coolest things I've seen in languages development.

~~~
happyslobro
This is what I never got about the Java and C++ type systems. If you claim to
value static typing, why are you not typedefing your generic floats / doubles
to meters and seconds and stuff? It looks like there is a thorough
implementation of standard units in Boost (
[http://www.boost.org/doc/libs/1_55_0/doc/html/boost_units/Un...](http://www.boost.org/doc/libs/1_55_0/doc/html/boost_units/Units.html)).

------
singularity2001
30 $ -> € Unrecognized character '$'

Conformance error Left side is: 30 (dimensionless) Right side is: 1.3489879609
dollar (currency) Suggestion: multiply left side by currency

30 * $ -> € Unrecognized character '$'

$30 -> € Warning: undefined symbol "$30".

1 EUR = 1.09864 USD anyways

~~~
simooooo
You need to use "USD" or "dollars" I think

------
eps
Reading through the spec blurb - it looks more like a piece of _software_ that
comes with its own scriptable language rather than a _language_ per se.
Similar to how Mathematica is. Yes, there's syntax and semantics to it, but
it's mainly about the built-in functionality.

~~~
mephistoschmalz
Related story: Stephen Wolfram (the "inventor" of Mathematica talked at my
university many years ago about an early version of Mathematica. It was
probably version 2 or 3 at that point.)

He noted that Mathematica was a programming language (but different than
imperative languages in a lot of ways) and said "but if I said that I created
a new programming language, people would string me up because there are too
many already" (or something like that.) He concluded, "that's why we call
Mathematica 'A System for Doing Mathematics by Computer'".

It got a huge laugh.

------
kseistrup
The GNU Units package should be available from most Linux distros ⌘
[https://www.gnu.org/software/units/](https://www.gnu.org/software/units/)

~~~
mephistoschmalz
When I saw the author talk at LL4 at MIT, he did note that GNU units was an
inspiration (and was an inspiration for a precursor special-purpose language.)
[https://frinklang.org/LL4.html#slide2](https://frinklang.org/LL4.html#slide2)

I'm a huge fan of the "units" program too. It rules, and I've used it for
decades.

The best part is that Frink is "units" plus a Turing-complete language, (which
is a provable rung or two up the Chomsky hierarchy,) so you can save values in
variables and use them later, write loops, define functions, etc.

------
dflock
Also available for android:
[https://play.google.com/store/apps/details?id=frink.android](https://play.google.com/store/apps/details?id=frink.android)

------
tempodox
I'm not a Java expert, so the Download section is just too confusing. I've
given up.

~~~
bokchoi
> Quick Start: On many platforms, if you already have Java installed, you can
> start Frink in the GUI mode by simply downloading and double-clicking the
> frink.jar file.

------
golanggeek
the site seems to be down.

