I want to see a procedure call, "Hello world" I/O, some math or string manipulation, and how to run that myself.
After that I can look at compiler sources.
But even so, I know I'd like a good reference of what primitive operations are, the type system, and what's provided by the Prelude.
Mirth hasn't been released. I found it and decided to share it.
You can still use Factor http://factorcode.org/
I think it is still maintained, but slow releases.
Personally, I'm a Qvera man myself, but there's a cost to entry there (unless their free Standard edition does what you need).
> Forth, Haskell, Idris, Rust, Lisp.
All great. I would do anything to find a shop that actually uses any one of these instead of the usual boring stuff.
Seriously, how would one proceed to find such places?
And personal FOSS projects of course.
[1] https://en.wikipedia.org/wiki/Concatenative_programming_lang...
This all works well for untyped languages (FORTH is untyped, as an example), but once you add in reasonably complex types you can't really use "sequences" alone, anymore; the directly comparable property is instead true of string diagrams. And once you add some more complexity, you even have to deal with, e.g. proof nets. There are ways to simplify textual syntaxes like e.g. typed lambda calculus along 'concatenative' lines, but mostly these are simple tweaks (De Bruijn notation, and/or De Bruijn indexes) that don't really create a "different" language.
Interestingly, PostScript is also concatenative.
If you've ever used an RPN calculator, you almost understand how concatenative languages work!
Does anyone know how Github chooses which languages to adopt in their language detector?
Another nice one (again imho) is [0].
Do you only give yourself a pass for tinkering instead of using your precious free-time to credentialize in and improve existing software?
With the context presented so far (zero, for those keeping score at home), there's no reason to assume that the poster is dismissive of the project being discussed.
Why IS Mirth needed, when we can improve other languages? This is actually a perfect segue for proponents of Mirth to explain the niche the language occupies and it's pros and cons for users/engineers.
Thanks for making HN cancer, dang. Honestly, you're jumping up random asses on the internet that you'll never meet nor matter to is why the quality of discussion on HN has reached the trough it seems comfortably rested in. But hey. You posted the guidelines. You're a hero.
(In case you didn't already, you can read about this family of languages in http://evincarofautumn.blogspot.com/2012/02/why-concatenativ...)
I'm personally happy that somebody is doing more research in this field.
Be the change you want to see!
When disagreeing, please reply to the argument instead of calling names. "That is idiotic; 1 + 1 is 2, not 3" can be shortened to "1 + 1 is 2, not 3."
Although it depends on how it is phrased of course.
I'm inclined to agree, but in the case of outright hypocrisy I think the point deserves to be made, because hypocrisy is literally the worst
succ : Nat -- Nat
means that if you can prove there is a Nat, n on the top of the stack, you can do succ to replace that with a Nat, succ n. Similarly we have: + : Nat Nat -- Nat
Which says if you have two Nats on the top of the stack you can do + to get a single Nat.The next weird thing is pattern matching. + is defined with two cases. The first is:
zero + = id
Which makes some sense: to add zero to x, do nothing. Making up a variable syntax it would look like: <x> zero + = <x>
The pattern matching on the next line is harder: succ + = + succ
Which (making up syntax again) says that if your stack looks like: m n
And n = succ k: m (succ k)
And you do +, you “unapply” succ to get a “stack” that looks like: m k succ
With the application of + shown: m k succ +
And this matches the pattern above so we transform: m k + succ
And evaluate: (m+k) succ
(m+k+1)
(m+n)
I think this is a rough idea of how the basic types work: Denote a “stack” of types (e.g. Nat Nat above) as [a], and single types a.
If e : [a] -- [b] then for any [c], e : [c] [a] -- [c] [b]
If dashes are omitted from a type a, it is the same as the type -- a (ie [b] -- [b] a for any [b])
If e : [a] -- [b] and f : [b] -- [c] then e f : [a] -- [c]
To define a word w : [a] -- [b], e w = f is a valid clause if:
1. e has type [c] -- [a]
2. f has type [c] -- [b]
3. e is a valid pattern (ie made out of constructors (?))
I guess the rest of the typing rules are more complicated.If you read any introduction to dependent types, they will do this.
So you are actually doing it a disservice. Perhaps the author intended a larger release with better docs and examples (or no release at all if it’s a toy project).
But now it will be yet another “ah, one of those languages with no documentation or viable use cases”.
Languages are a dime a dozen, there are several of then on HN each weak. “How dare you demand something from something made for free” is not a credible defence for anything.
Also a perfectly trivial one, an insulting one, and one that has been asked countless times, and that has no real place in a post presenting a new language but goes to meta yak shaving philosophy.
(A question like "what are Mirths differentiating points, what new does it bring" would be an acceptable version -- but that wasn't what was asked).
Note that by starting with "I know you are a gigantic egomaniac" and "inflated sense" and "Thanks for making HN cancer", you already show that you don't have a valid contribution to the discussion either. It even seems like the content of the discussion was secondary, just needed to vent at someone...
That comment was killed automatically by HN's anti-troll software, but I unkilled it last night. Maybe that was a mistake since it led to more offtopicness.
If you want to live in a society where respect trickles up instead of violence trickling down then you mustn't express yourself with violence.
Doesn't look simple to me.
This one is in one file, but more than half a megabyte of code spanning close to 12000 lines:
https://github.com/clisp-lang/clisp/blob/master/src/compiler...
The Emacs Lisp byte compiler also doesn't look like a good small example for neophytes:
http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/emacs-l...