
PureScript - tosh
http://www.purescript.org
======
pitaj
I think PureScript would have been much more popular from the get go if it
used a syntax closer to existing JS syntax. This is why TypeScript is so
popular, and also why CoffeeScript is now very unpopular among Javascripters.

~~~
harpocrates
I think the point of PureScript was to have a Haskell that would compile to
JS, but which (unlike GHCJS) would have breaking changes to integrate better
with JS features. Trying to look like JavaScript might be a bit hard then...

That said, I'm curious about what sorts of things you think they could have
done to have a more JS-like syntax. Any ideas?

------
xiamx
Very interesting! For those who are more involved in this field, how does
PureScript compare to other functional programming languages that also
compiles to javascript?

~~~
thelambentonion
IMO, PureScript has some very interesting advantages in comparison to other
functional languages targeting JavaScript.

It has a very strong type system, a compiler that can produce optimized and
human readable JavaScript, and dead simple FFI. It _also_ doesn't rely on a
runtime like Elm or GHCJS do, so the resulting code size is typically much
smaller.

It's also been used to build some really interesting and unique takes on the
frontend design problem (cf. Pux [0] and Halogen [1]).

[0] [https://github.com/alexmingoia/purescript-
pux](https://github.com/alexmingoia/purescript-pux)

[1] [https://github.com/slamdata/purescript-
halogen](https://github.com/slamdata/purescript-halogen)

~~~
sjrd
> and dead simple FFI

That's very accurate. So _dead_ simple that as soon as you want to manipulate
something else than primitive values and functions from JS, you hit a _dead_
end. How do you read a field from a JS object? How do you call a JS method?
For all these things, you have to write "bridge" JS code that exposes JS
libraries in a way that PureScript is happy with.

It's also striking to me that the documentation of PureScript FFI [1] has to
teach you _what the output of the compiler will be_ so that you can use the
FFI. Am I really supposed to know about those `$`s? What if the compiler
improves and changes its internals?

I'm sorry if my comment is perceived as a rant, but I can never understand how
people can call PureScript's FFI good. Compare it to interoperability in
TypeScript, ClojureScript, or Scala.js, and it is way behind!

[1]
[http://www.purescript.org/learn/ffi/](http://www.purescript.org/learn/ffi/)

~~~
kika
It sounds like bashing.

Here's my unfinished, but working code, interfacing Google Apps Script to
Purescript [https://github.com/kika/purescript-google-
appsscript/tree/ma...](https://github.com/kika/purescript-google-
appsscript/tree/master/src/Google/AppsScript)

Please tell me what is so _dead_ in it.

Though I'm pretty new to Purescript and to the Haskell world in general, it
took me almost no effort to write this code once I figured out how
Data.Function (renamed Data.Function.Uncurried in the latest Purescripts)
works. Probably your issue with Purescript FFI was about not being aware of
these helpers (which don't do much _help_ per se, but remove ugly clutter of
nested functions in JS code).

~~~
sjrd
I guess my comment qualifies as bashing. It still is what I think, though.

Look at your own code from [https://github.com/kika/purescript-google-
appsscript/tree/ma...](https://github.com/kika/purescript-google-
appsscript/tree/master/src/Google/AppsScript) There is more JS code than
PureScript! Why? Because you need bridge JS code for pretty much every JS
library you want to call. Which is _precisely_ the point I make in the grand-
parent:

"For all these things, you have to write "bridge" JS code that exposes JS
libraries in a way that PureScript is happy with."

------
ChristianGeek
The discussion from a few years ago:

[https://news.ycombinator.com/item?id=8351981](https://news.ycombinator.com/item?id=8351981)

------
nickmain
Does anyone have experience with the C++ backend ?

[https://github.com/pure11/pure11](https://github.com/pure11/pure11)

------
cosinetau
OH shit! It's actually not written in JS. Good going!

------
devdoomari
does purescript support d.ts definition files for FFI?

