
Zygomys – An embedded scripting language for Go - chewxy
https://github.com/glycerine/zygomys
======
grabcocque
Huh no. You may have parens but that's it.

It's not not predominantly a functional programming language and has no rich
set of immutable, persistent data structures.

So, it's no Clojure. But it is young. It may become a clojure but it seems
presumptuous at this stage..

~~~
iagooar
Calling itself a Clojure is a pretty bold statement.

Clojure is one of the most revolutionary programming languages of the last
decade, I can't see how this mini-toy-language packaged as a Go library can be
compared to the mighty Clojure with a straight face.

~~~
mapcars
What revolutionary exactly? Transducers?

~~~
grabcocque
Transducers and Spec are two great examples of what Clojure's _community_ is
best at. There's a practicality of purpose and single mindedness of philosophy
at play in the language's evolution here. Making simple easy.

To my mind though, Clojure brought clarity to the JVM on issues of
concurrency, state, mutability, object orientation and persistence and for
that I will always love it.

~~~
pjmlp
Transducers were already in Common Lisp in 1989,

[https://www.reddit.com/r/Clojure/comments/3tha86/transducers...](https://www.reddit.com/r/Clojure/comments/3tha86/transducers_in_1989/)

Likewise Spec ideas are not new to old timer Lispers, many forms of Lisp type
annotations are similar to it.

What Clojure has brought was making those ideas "modern" again.

~~~
pron
Isn't the idea that all mutation must either be local or transactional rather
revolutionary? In a sense, Erlang is like that, too, but Clojure took the idea
much further. It is pretty clear that that's Clojure's the main idea.

~~~
pjmlp
No, because those ideas can be tracked down to Miranda or even early probably,
when digging into enough SIGPLAN papers.

What might be revolutionary is making more "common programmers" aware of them.

~~~
pron
Isn't Miranda pure-functional? Because Clojure is imperative (-functional).
Saying you can't mutate is very different from saying you can mutate whatever
you like, whenever you like, as long as its transactional or not observable.

And SIGPLAN papers don't really count. A revolutionary product is not the same
as a revolutionary idea. Implementing ideas that have never been productized
is still revolutionary.

------
unwind
Code like

    
    
        if x + y == 8 { (println "we add up") } else { (println "wat?" ) }
    

really seems to combine syntaxes in a super-confusing manner ... The "if" is
not in an s-expression, but the println call is? And there are blocks denoted
using C-style braces mixed in ... I think this would take a while to get used
to. :)

~~~
jaten
The infix is optional, but I do find it nice for interaction.

~~~
lacampbell
You get used to real s-expressions very quickly. People have a big hangup
about it bit if you have an open mind it becomes a non-issue.

------
nnq
more like Hy is to Python I'd say:
[http://docs.hylang.org/en/latest/quickstart.html](http://docs.hylang.org/en/latest/quickstart.html)

------
delegate
I don't think Clojure is .. _that_ .. to Java.

Clojure is a language which compiles to JVM byte code, which is also the
platform that java compiles to, so (as consequence of that) they can
interoperate.

But I don't think Clojure was meant as a replacement for Java or some kind of
extension of the Java language or some sort of CoffeeScript for Java.

Clojure is a powerful functional programming language with lots of new
paradigms and original ideas - quite at the opposite spectrum of the object-
oriented Java.

Although I don't program in it, my C++ coding skills and more importantly
architectural skills, improved dramatically after learning Clojure.

So the title of the article is incorrect (and click-bait-y).

------
camus2
Nice project.

> x := 3; y := 5; if x + y == 8 { (println "we add up") } else { (println
> "wat?" ) }

though mixing C like syntax and LISP is a bit confusing. Why such choice ?

~~~
jaten
Thank you. I tend to do interactive mathy things, and find the infix being the
default at the repl cuts down on keystrokes and speeds up the interaction.
Anything within {} curly braces is treated as infix, and infix is the starting
mode at the repl. You can freely mix (prefix) and {infix} as you wish. For
longer math expressions this does tend to help readability.

------
mrcactu5
i think this is really cool. Can anyone remind me (on formal grounds) why a
programmer might be interested in a compiler

    
    
      LISP --> GO-lang 
    

I am a huge fan / user of Python (which is an interface to C) but that also
did take some time to justify itself, no?

------
TeeWEE
I like this, this allows me to build a complex application in go, but
pluggable business logic in lisp.

