Hacker News new | past | comments | ask | show | jobs | submit login

> After playing with Haskell for the last two years, I figured that it would be pretty damn hard to write conventional LAMP/JS webpages in Haskell, but I still wanted to try to solve some of my real world problems with it.

Really?

You should check out:

http://adit.io/posts/2013-04-15-making-a-website-with-haskel...




I already got a few libraries and frameworks up and running (including scotty, actually, which is really cute), but somehow I can never have everything I want at the same time...

Some tutorials will have a few routes and a DB, some other will have an intricate rendering and templating architecture and basically no data storage solution, some are more or less a hello world with a session manager... And there's Yesod, which seems to do everything out of the box, but which has such a colossal amount of dependencies that I never got anything to build beyond fresh yesod-init setups, which still manage to fail on my current setup, despite using Stackage and sandboxes.

Among what I've seen in Haskell, ORMs and web frameworks are the two types of libraries that carry the largest and most cumbersome monad transformer stacks around; making a website involves having to typecheck a huge monad transformer into another huge monad transformer. This is not easy.

Not to mention that, in the world of open-source web developement, nearly all the documentation, expertise, copy-pastable code examples and standard practices are in dynamic OOP languages.

Perhaps the ease of RoR, PHP and Node has let everybody forget how much stuff is involved in making modern webpages : )


> including scotty, actually, which is really cute

You know people use Scotty in production right? It's more than cute, though I agree that most Haskell library/framework documentation could use some work.

> And there's Yesod, which seems to do everything out of the box, but which has such a colossal amount of dependencies that I never got anything to build beyond fresh yesod-init setups, which still manage to fail on my current setup, despite using Stackage and sandboxes.

Hm, did you try only using Stackage or sandboxes? If your up for another solution, I know Halcyon[0] is supposed to be very frictionless.

> Among what I've seen in Haskell, ORMs and web frameworks are the two types of libraries that carry the largest and most cumbersome monad transformer stacks around; making a website involves having to typecheck a huge monad transformer into another huge monad transformer. This is not easy.

Matter of opinion? I find Scotty and Snaps monad transformer stacks to be pretty simple. This is something that becomes easy with experience I think, just like getting used to using composition over inheritance.

> Not to mention that, in the world of open-source web developement, nearly all the documentation, expertise, copy-pastable code examples and standard practices are in dynamic OOP languages.

Mostly a function of manpower available I'm guessing. I find when you ask for examples or file bugs against libraries/frameworks they are responded to quickly though.

> Perhaps the ease of RoR, PHP and Node has let everybody forget how much stuff is involved in making modern webpages : )

You just have to remember how much polish they have and how it was nowhere near this easy in the beginning.


Yeah, I meant "cute" more in the sense of "elegant". Unfortunately it felt too barebones and there wasn't enough documentation to let me get everything running. I like that lib, though.

...

Halcyon, I'l remember that. I still have to try Nix one day, too

...

Matter of experience, I guess, yeah

...

Precisely, there's a virtuous cycle going around popular platforms due to the larger amounts of features and documentation getting written, and in turn, the larger amount of new devs getting into it. Shame those platforms are built on such bad languages... It's cool to see the web evolving in a direction where Haskell can solve very specific problems without disrupting people's stacks.


See, at the bottom of that link, I have three links that are supposed to solve my session problems:

- one is dead

- another is the raw Hackage page for a session library spun off from another project

- the last is a cute hello world for the framework that underpins Scotty.

No Node.js tutorial would finish without a working session manager.


Try using the Scotty inspired Spock[0] with Spock-auth[1] or consider using Snap[2] or Yesod[3].

Here is a Yesod example[4] that uses Auth.

Here is a Snap example[5] that uses Auth.

> No Node.js tutorial would finish without a working session manager.

Yeah, many Haskell library/framework writers tend to see end to end tutorials as hand holding or see something as Auth as so simple it needs no explanation.

It was a roadblock for me personally.

0: https://github.com/agrafix/Spock

1: http://hackage.haskell.org/package/Spock-auth

2: http://snapframework.com/

3: http://www.yesodweb.com/

4: http://www.yesodweb.com/book/blog-example-advanced

5: http://www.christopherbiscardi.com/2014/01/07/getting-starte...


Thank you!

I have a nice lil' prototype going on in Snap, I have Persistent running, and I'm this close to have auth working.

But in the meantime, I have lots of logs to parse ; )




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: