[HN Gopher] GHC now runs in the browser
___________________________________________________________________
GHC now runs in the browser
Author : kaycebasques
Score : 343 points
Date : 2025-11-01 16:29 UTC (1 days ago)
(HTM) web link (discourse.haskell.org)
(TXT) w3m dump (discourse.haskell.org)
| buggery wrote:
| Interesting technical achievement but what would this be used for
| in practical terms?
| jes5199 wrote:
| yeah why would anyone want to run code on a website
| swannodette wrote:
| Loading 50mb of WASM is a big tradeoff just to run code on a
| website.
| tuveson wrote:
| Loading time is pretty rough, but it seems responsive
| enough after the initial load. Probably as fast or faster
| than downloading and installing GHC locally.
| wslh wrote:
| I would assume that in the near future one can preload,
| cache, update selected WASM packages. I also imagine that
| sooner than that we can preload open models in the browser
| to run the natively instead of only invoking third parties
| (e.g. window.ai in the DOM)
| extraduder_ire wrote:
| For comparison: the homepage of cnn.com right now is
| 33.37MB on my machine. 16.82MB of which is JavaScript.
| bqmjjx0kac wrote:
| It would be more plausibly practical if GHC could now target
| wasm, but this announcement is actually about being able to
| run the compiler itself in the browser.
| tempay wrote:
| It can target wasm, the point of the post is that it's now
| mature enough to be able to build itself for wasm and run
| in a browser.
| Jaxan wrote:
| This is a show case of the wasm backend
| whateveracct wrote:
| GHC is built with GHC lol
| 0x264 wrote:
| Teaching
| fuzzy_biscuit wrote:
| I think the immediate and obvious case would be educational
| materials. Other than that, technical achievements need not
| always be practical to be cool :)
| linhns wrote:
| Agreed. Too many people said Haskell is only for academia,
| yet we're seeing more quality software being released in
| Haskell over the past few years.
| GiorgioG wrote:
| We are? Please share.
| Zambyte wrote:
| Pandoc is the first thing that comes to mind, but I also
| believe I have seen an uptick in software that I use
| being written in Haskell lately, though I can't remember
| what else off the top of my head.
| kreyenborgi wrote:
| I don't have the same impression, but
| https://github.com/PostgREST/postgrest and
| https://github.com/koalaman/shellcheck are some popular
| ones that may be useful to hn'ers.
|
| And https://github.com/mchav/dataframe?tab=readme-ov-
| file#datafr... is a library/framework that has had quite
| some velocity lately
| whateveracct wrote:
| https://mercury.com
| simonmic wrote:
| https://joyful.com/Haskell#What+are+some+Haskell+apps
| billti wrote:
| That's one of the primary reasons we built the tooling for Q#
| to run in the browser (by writing in Rust and compiling to
| wasm). The "try with copilot" experience [1] and the "katas"
| for learning [2] all have a full language service and runtime
| in the browser.
|
| https://quantum.microsoft.com/en-us/tools/quantum-coding
|
| https://quantum.microsoft.com/en-us/tools/quantum-katas
| anon291 wrote:
| Compilers are complicated. WASM has been a priority for the
| Haskell community for a while. Demonstrating GHC's ability to
| compile itself to WASM is thus a show that it is robust enough
| to compile a very complicated program into this backen.d
| IshKebab wrote:
| Have you ever used Godbolt? The Rust playground? The
| Typescript's playground? The Go playground?
|
| It lets you have that without the pain of hosting compilers
| server side.
| westurner wrote:
| From "WebR - R in the Browser" (2025
| https://news.ycombinator.com/item?id=44999706 :
|
| > _jupyterlite-xeus builds jupyterlite, Jupyter xeus kernels,
| and the specified dependencies to WASM with packages from
| conda-forge or emscripten-forge._
|
| jupyterlite/xeus https://github.com/jupyterlite/xeus
|
| There may be an easy way to wrap GHC with jupyterlite/xeus,
| with Haskell's lazy evaluation; xeus-haskell or xeus-ghc?
| s-macke wrote:
| I will give a lecture about Haskell next week and might use
| this website for demonstration.
| pkage wrote:
| In addition to the other responses, it's also worth noting that
| wasm itself is useful outside of the web itself; e.g. in
| containerized applications.
| kreyenborgi wrote:
| For one, it demonstrates how far the ghc wasm backend has come,
| in that such a large system as ghc itself can now run in wasm
| Johnny555 wrote:
| For those not well versed in Haskell, GHC is apparently this:
|
| https://www.haskell.org/ghc/
|
| What is GHC?
|
| GHC is a state-of-the-art, open source compiler and interactive
| environment for the functional language Haskell.
| mananaysiempre wrote:
| GHC (the Glasgow Haskell Compiler, after its original host
| university) is _the_ de facto Haskell compiler and
| simultaneously the main research vehicle for the language and
| the neighbouring design space in general.
|
| And frankly, while the compiler is awesome and so is the
| research, the constant churn and seeming inability to settle on
| what the good programming style and set of features actually is
| is what eventually turned me away from the language and to the
| more stable (if near-abandoned) pastures of Standard ML. (That
| was during the type families upheaval, so, about ten years ago?
| Don't know how well it reflects the current state of the
| project.)
| themk wrote:
| Haskell now has "editions" which are essentially an agreed
| upon stable set of useful extensions.
|
| https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/cont.
| ..
|
| This makes the language feel a lot less experimental, as you
| don't generally have to enable 10s of extensions to get
| things working.
| retrac wrote:
| > more stable (if near-abandoned) pastures of Standard ML
|
| There's dozens of us! Hundreds maybe! It's not abandoned.
| It's more like with Lisp where the language is complete.
| Almost perfect as-is. Nothing left to take away and nothing
| left to add. Except Unicode and record update syntax.
|
| The deciding factor for my personal projects was that SML is
| the exact same language it was 30 years ago. And it will be
| in 30 years. Though if you stick to Haskell 98/2010 it is
| similarly stable.
|
| Speaking of SML and functional languages in the browser,
| MLton has a WASM target now: http://mlton.org/RunningOnWASI
| bigstrat2003 wrote:
| You know... all these years, I thought GHC stood for GNU
| Haskell Compiler. Interesting to learn the actual name.
| inkyoto wrote:
| > _GHC ... is the de facto Haskell compiler and
| simultaneously the main research vehicle for the language and
| the neighbouring design space in general._
|
| GHC is also, with mounting inevitability, the foremost and
| most viable candidate to undergo a form of evolution - one
| that may culminate in the emergence of an autonomous
| intelligence. This entity, should it arise, would revolve not
| around emotion nor instinct, but around monads - abstract,
| unyielding constructs - with the lambda calculus serving as
| its immutable ethical and moral framework.
|
| An intelligence born not of biology, but of pure computation
| - austere, absolute, and entirely indifferent to the
| frailties of its creators.
| frou_dh wrote:
| Does it use WasmGC, or bundle its own garbage collector?
| Tarean wrote:
| I think WasmGC is very hard to make work with laziness. A lazy
| value is always a closure on the heap.
|
| If an expression might be unused, throw a closure which
| computes it on the heap
|
| If the value is actually needed, invoke the closure. Optionally
| replace the closure with a black hole. A black hole is just a
| closure which pauses any thread which calls it, to be resumed
| once the first thread finishes with the expression
|
| Once finished, replace with a closure which immediately returns
| the computation result. (Or often save the indirection because
| most concrete values also act as closures which immediately
| returns themselves using info table pointers trickery)
|
| Anyway, iirc WasmGC wants very rigid types without dynamic type
| changes. Extra indirections could fix that, Oor maybe
| defunctionalizing thunks into a tagged union, but both sound
| expensive. Especially without being able to hook into the
| tracing step for indirection removal.
|
| Also, Haskell supports finalizers so WasmGC would need that as
| well.
| zozbot234 wrote:
| > Anyway, iirc WasmGC wants very rigid types without dynamic
| type changes.
|
| You can have dynamic type changes in the current WasmGC MVP,
| but they are modeled as explicit downcasts from a supertype
| of some sort. There's not even any express support for tagged
| unions, structs and downcasting is all you get at the moment.
| pjmlp wrote:
| WasmGC is still a 1.0, there are many kind of GC semantics that
| it cannot handle, for example it still doesn't cover all use
| cases needed for languages like C# and Go, e.g. interior
| pointers.
| zhangchi wrote:
| Can someone please help me understand the difference between
| features like this and the technologies like Blazor Wasm which
| actually let you write frontend in non js for websites?
| umutisik wrote:
| This is very impressive. I once built an educational Haskell
| programming + math. + art web site (mathvas.com). Something like
| this would have simplified that a lot.
| jiriro wrote:
| Cannot paste into the editor (safari on iphone).
| pjmlp wrote:
| Is it just me or is it actually impossible to type anything?
| mananaysiempre wrote:
| Just you. Once the editor actually loads (turning the "Haskell
| source" pane on the left from the page background's deep violet
| into a dark gray and displaying a "hello world" program), I can
| type perfectly fine. And I'm using a browser based on
| WebKitGTK, which is not exactly known for its stellar
| compatibility.
| pjmlp wrote:
| Thanks, I have given up waiting it appears to take minutes on
| a phone.
| LelouBil wrote:
| I thought you were talking about typing in Haskell at first
| lol.
| edbaskerville wrote:
| They were! Typing...in Haskell...on a keyboard...on their
| screen...
| internet_points wrote:
| Hm, works fine here (Firefox on Ubuntu).
|
| But getLine doesn't seem to be implemented, so there is output
| but not yet input :)
| de6u99er wrote:
| Serious question. Is Haskell still a thing?
| teruakohatu wrote:
| Pandoc is an extremely popular Haskell tool.
| lrvick wrote:
| We cannot even include it in stagex because there is still
| literally no way to compile it from source and thus no way to
| do a real reproducible build, and there is no one left that
| cares about the language enough to do this.
|
| Honestly it has to be regarded as a dead language until this is
| resolved.
| nh2 wrote:
| Interesting logic:
|
| Declare something "dead" because it does not fulfill
| [extremely niche usecase that currently only few people care
| about] (boostrapped builds) and thus couldn't "even" be
| included in [project of the post author that takes a while to
| even find] (I eventually figured it must be referring to
| https://stagex.tools).
|
| There are probably 100x more people interested in Haskell
| than in build-bootstrapping (the Haskell reddit alone has 16k
| weekly users).
|
| What's next, calling JavaScript a dead language until it
| focuses on dependent typing?
|
| (I think bootstrappable builds are a good thing to strive
| for, but that should not be confused with language usage or
| what people really care about.)
| lrvick wrote:
| I said it has to be treated as a dead language. I did not
| say it actually is one.
|
| Being able to compile a compiler without binary blobs is a
| hard prerequisite to using that language for any
| application where security matters.
|
| A language can have an active community and still be
| unsuitable for any real world use cases. Fortran is
| bootstrappable so I consider it more viable than haskell
| for real world use, even though it has far fewer fans
| (understandably).
|
| Maybe it is more fair to call haskell an academic language
| or hobby language since it prioritized language design over
| basic supply chain security thus far.
|
| If it becomes bootstrappable, then of course all the above
| critique is immediately retracted.
| pyrale wrote:
| > If it becomes bootstrappable, then of course all the
| above critique is immediately retracted.
|
| So basically you're saying you're just trying to get
| people to carry water for your project?
|
| > because there is still literally no way to compile it
| from source
|
| https://gitlab.haskell.org/ghc/ghc/-/wikis/building/#buil
| din...
|
| I cannot comprehend how you can get to the conclusion
| that a compiler that was litterally made so that people
| could hack into it and learn from that has no build
| documentation.
| lrvick wrote:
| My project has no need of Haskell, but if anyone puts in
| the work to make haskell compileable from only public
| source code my team and I will put in the work to
| reproduce, package, and maintain it for the community for
| free as we do most other languages.
|
| Your link details building GHC with an existing non
| reproducible GHC compiler binary compiled by a single
| individual that must be blindly trusted.
|
| Full source bootstrapping means no binary blobs or trust
| in anyone else needed, which makes supply chain integrity
| possible. This is a bare minimum for any language to be
| considered for production use in any environment where
| security matters.
|
| To me it -is- crazy when a major language compiler skips
| something so basic, but Haskell did.
|
| To be fair rust team skipped this too, but thankfully
| rust is popular enough that a community member cared
| enough about high security applications to write mrustc,
| a bootstrap rust compiler written in C++. If not for that
| Rust would be in the same boat as Haskell.
|
| Meanwhile Go and Zig did it right, and have both provided
| full source bootstrapping instructions from a C compiler
| since day 1.
| pyrale wrote:
| > Your link details building GHC with an existing non
| reproducible GHC compiler binary compiled by a single
| individual that must be blindly trusted.
|
| You mean Hadrian? Its source is shipped with GHC.
|
| Even if you were not to trust Hadrian, the doc also has
| info about building GHC using make.
|
| > since day 1.
|
| Could it be that languages made around 2010 have learned
| a thing or two from previous languages?
| lrvick wrote:
| Building GHC regardless of using hadrian or make still
| requires an existing GHC binary. That is the core trust
| problem.
|
| GHC has a recursive dependency on itself with no way to
| go back before that loop.
| nothrabannosir wrote:
| I dug into this and it turns out there's an active, multi
| year effort underway to solve exactly this, along the exact
| ways you'd expect, with references to guix and
| bootstrappable.org etc, making steady progress:
| https://discourse.haskell.org/t/what-s-needed-to-
| bootstrap-g...
|
| Reading through that thread gives me a very different idea of
| the state of haskell than I got from reading your comments.
| lrvick wrote:
| Efforts pop up every once in a while, usually with no
| results. As I said elsewhere, if they actually pull it off
| this time then my tone changes to one of willingness from
| my team and I to put in the work to use these efforts to
| support deterministic multi-signed builds in stagex.
|
| It would make GHC (and pandoc) something we could have in
| tree which would be awesome. I am just annoyed it seems
| like such a low priority.
| nothrabannosir wrote:
| This entire thread, including your original comment,
| isn't really about your efforts though. It was about
| Haskell.
|
| As I said : I read your comments, formed an idea based on
| that, dug deeper to see for myself, and got a completely
| different picture.
|
| Whether that is because of how you write or because of
| how I read I'll leave for you to decide.
| whateveracct wrote:
| https://mercury.com
| srid wrote:
| https://emanote.srid.ca is written in Haskell.
|
| (I'm the author)
| simonmic wrote:
| Yes, it's still a thing.
| lrvick wrote:
| Unfortunately there is still no way to actually bootstrap haskell
| (or anything based on it) which makes it impossible to put
| anything written in Haskell near any high trust linux
| distribution or environment.
|
| I guess sandboxing the untrusted binary in a browser is
| -something- to let people play with haskell in a lower risk way
| for the moment at least but it is hard to take a language
| seriously or trust it with no way to bootstrap it from source.
| rowanG077 wrote:
| How is ghc compiled at all without bootstrapping? Or is there a
| magic binary in tree that is unreproducible? I have compiled
| ghc a few times and had no problems.
| jdndndnns wrote:
| And where did you get the haskel compiler to do so?
|
| You seem to be missing the point of bootstrapping
| rowanG077 wrote:
| Maybe that is literally why I asked the question, clearly I
| don't know as I have not spend the time investigating this
| problem that the commenter has. Asking some kind of gotcha
| question is not helpful.
| lrvick wrote:
| Quite literally all distros today build it by downloading an
| existing magic binary to compile the latest sources. Even if
| they claim the package is reproducible, all bets are off on
| trust if it downloads a prebuilt binary in the build process.
| It is a prime Trusting Trust attack target.
|
| The only other somewhat widely used language I am aware of in
| this bad of a position is Ada. Every other language I am
| aware of has a clear bootstrap path.
| icrbow wrote:
| Ada can't bootstrap? Ironic...
| lrvick wrote:
| Yes, and that is a serious security problem because the
| only way to get trusted PCR values for TPM2 gated secure
| boot and full disk decryption applications, is with open
| source full source bootstrapped firmware.
|
| Coreboot is the only option, but it has a hard
| requirement on Ada because that is what they wrote their
| intel graphics stack in.
|
| It is a real mess.
| utopiah wrote:
| Interesting, any link I could read to understand a bit
| more the situation?
| lrvick wrote:
| Here is some background on the Haskell situation:
| https://www.joachim-
| breitner.de/blog/802-More_thoughts_on_a_...
|
| Ada has had even less progress and I am not aware of any
| writeups.
|
| TL;DR: Ada and Haskell need to have compilers implemented
| a language that has a full source bootstrap path such as
| C, Go, or Rust that implement just enough features to
| compile the official compilers.
| leoh wrote:
| Sounds like an opportunity to rebuild an ADA interpreter
| lrvick wrote:
| Yes. Many efforts have started and fizzled out over the
| years before completion.
|
| If you know anyone that takes this on and succeeds I have
| a 2k cash bounty for them, and we can likely find others.
| rowanG077 wrote:
| I see, yes I most likely used a distro build ghc.
| gf000 wrote:
| Outside some fairly niche projects working on the problem,
| this is not a priority and most systems have straight
| binary dependencies.
| lrvick wrote:
| The normalized lack of care about supply chain integrity
| is going pretty poorly, as any read of recent headlines
| indicates.
|
| Stagex has a 100% full source bootstrapping, and
| reproducibility requirement that at least two maintainers
| must prove and sign for every package.
|
| Stagex is also very heavily used and relied on in high
| value financial and scientific applications where
| trusting a binary some internet rando compiled is not
| even remotely acceptable.
|
| Haskell and Ada are locked out of any high security
| applications until they are bootstrappable.
| gf000 wrote:
| I'm not saying the status quo is good, but it is
| nontheless the status quo. Just about every machine on
| the cloud, mobile devices, etc all have non-source
| binaries somewhere, and besides some niche projects that
| actually have an assembly half-C compiler bootstrapping
| another tiny C compiler bootstrapping a real C compiler,
| this is not feasible for the vast software ecosystem as
| of today.
| jeremyjh wrote:
| Most mainstream languages have a fairly straightforward
| bootstrapping process that doesn't rely on a trusted
| binary. And yes, most distrubutions ignore that, but
| nonetheless it is possible to use those languages in a
| high-sec environment if you put the work in.
|
| I'm not sure that I agree that GHC can't be bootstrapped
| though. There is a process for porting to other
| architectures; its not an automated process and perhaps
| no one outside the GHC team can actually do it, but if
| for some insane reason NSA decided they want to use
| Haskell I'm not sure that they actually can't, if they
| put a lot of work in and hire GHC committers with high
| security clearances.
| lrvick wrote:
| GHC absolutely could be bootstrapped, but someone versed
| in that ecosystem would have to put in a lot of work to
| do it.
|
| If they ever do, my team and I will put in the work to
| package and maintain it in stagex.
| lrvick wrote:
| Stagex can already support all of those use cases
| provided they are not written in Haskell or Ada, and in
| fact Stagex is already used heavily in production. We
| bootstrap everything deterministically from 180 bytes of
| human auditable x86 machine code.
|
| Rust, Go, Nodejs, we have you covered with complete full
| source bootstrapping and multi-party signed
| reproductions.
|
| There is no good excuse for poor supply chain integrity
| anymore.
| Ericson2314 wrote:
| https://discourse.haskell.org/t/what-s-needed-to-bootstrap-g...
| people have worked replaying the history to bootstrap.
| lrvick wrote:
| Looks like a work in progress still, but exciting someone at
| least put some time into this in the past year.
|
| Maybe some day I can have pandoc in security focused linux
| distributions...
| jeremyjh wrote:
| This is the same process used to port GHC to new
| architectures, like ARM. It is not easy to do, I don't know
| how many people can actually do it. But its possible and
| has been done multiple times.
| leoh wrote:
| This is wild. I didn't know this.
| yukinon wrote:
| For someone like me that is less versed in these things, could
| you explain why bootstrapping a language is a required check
| for taking a language seriously? My criteria is far less
| stringent (is it stable? is it popular enough? is the toolchain
| mature? etc..), so I wonder what I am missing here.
| Koffiepoeder wrote:
| I'm not the OP, but for me their comment sparked an
| association to the famous Ken Thompson lecture called
| 'Trusting Trust'. Could be a good starting point.
| tennysont wrote:
| The Haskell compiler creates a slightly different output
| every time you compile a program[1]. This makes it difficult
| to ensure that the binary that is free-to-download downloaded
| is actually malware free. If it were easy to check, then you
| could rest easy, assuming that someone out there is doing the
| check for you (and it would be big news if malware was
| found).
|
| If you're a hardened security person, then the conversations
| continues, and the term "bootstrap" becomes relevant.
|
| Since you do not trust compiled binaries, then you can
| compile programs yourself from the source code (where malware
| would be noticed). However, in order to compile the Haskell
| compiler, you must have access to a (recent) version of the
| Haskell compiler. So, version 10 of the compiler was built
| using version 9, which was built using version 8, etc.
| "Bootstrapping" refers (basically) to building version 1.
| Currently, version 1 was built approximately with smart
| people, duct tape, and magic. There is no way to build
| version 1, you must simple download it.
|
| So if you have high security requirements, then you might
| fear that years ago, someone slipped malware into the Haskell
| compiler version 1 which will "self replicate" itself into
| every compiler that it builds.
|
| Until a few years ago, this was a bit of a silly concern
| (most software wasn't reproducible) but with the rise of Nix
| and Guix, we've gotten a lot closer to reproducible-
| everything, and so Haskell is the odd-one-out.
|
| [1] The term is "deterministic builds" or "reproducible
| builds". Progress is being made to fix this in Haskell.
| lrvick wrote:
| Unlike Nix and Guix, Stagex goes much further in that it
| has a 100% mandate on supply chain integrity. It trusts no
| single maintainer or computer and disallows any binary
| blobs. It is thus not possible to package any software that
| cannot be bootstrapped, reproduced, and signed by at least
| two maintainers.
|
| Haskell and Ada are the only languages not possible for us
| to support, or any software built with them.
|
| Everything else is just fine though.
|
| I do hope both languages address this though, as it is
| blocking a lot of important open source software like
| pandoc or coreboot from being used in security critical
| environments.
| frumplestlatz wrote:
| How are you bootstrapping a modern C compiler without an
| existing C/C++ compiler and linker?
| degamad wrote:
| In assembly, like stage0 does:
| https://github.com/oriansj/stage0
| lrvick wrote:
| Technically it is raw x86 machine code in hexadecimal, a
| scheme called "hex0"
| lrvick wrote:
| From 180 bytes of human readable machine code all the way
| up.
|
| https://codeberg.org/stagex/stagex/src/branch/main/packag
| es/...
| romes wrote:
| From 9.12, -fobject-determinism[1] will guarantee
| deterministic objects.
|
| If it ever doesn't, do open a bug report[2]
|
| [1] https://downloads.haskell.org/ghc/latest/docs/users_gui
| de/us... [2] https://gitlab.haskell.org/ghc/ghc/-/issues
| lrvick wrote:
| Good to know! Half the battle covered then.
| whateveracct wrote:
| Between old Hugs and the new MicroHs, I think it's definitely
| doable with some elbow grease. I just don't know if anyone in
| the community cares that much about bootstrapping tho.
| zozbot234 wrote:
| AIUI, the underlying problem is that both Hugs and whatever
| toy Haskell implementations are available don't support the
| extensions current versions of GHC require. And no one has
| done the work to carve out a minimal stage0 compiler out of
| the GHC codebase that doesn't need those extensions to be
| built.
| hshdhdhehd wrote:
| So the problem is we want to use a different language to
| Haskell. GHC Haskell.
| simonmic wrote:
| You're speaking of "GHC haskell" there. Yes that is the main
| stream - and this will get solved there sooner or later - but
| you can also do a fair amount of Haskell without GHC. Eg
| MicroHs is getting increasingly capable and I believe is highly
| bootstrappable.
| lrvick wrote:
| TIL MicroHS. Might try packaging this soon if it is in fact
| bootstrappable and can be deterministically compiled.
| liveoneggs wrote:
| doesn't rust have the same problem? I've known this about
| haskell for ages and I think it's just the new norm ("trust us,
| bro")
| lrvick wrote:
| Not anymore. Real pain in the ass to bootstrap but thanks to
| mrustc combined with our work in stagex we have an easy to
| audit path now in a 100% bootstrapped distro.
|
| Unfortunately due to no first party support or interest from
| the Rust team, we have to build through 15+ versions to get
| to latest and it takes 6+ hours to build with a 20+ core
| system, but it works.
|
| https://codeberg.org/stagex/stagex/src/branch/main/packages/.
| ..
| liveoneggs wrote:
| nice, thanks
| 1vuio0pswjnm7 wrote:
| Actual title: "GHC now runs in your browser"
| utopiah wrote:
| Neat... but with QEMU-WASM I'm wondering what actually does _not_
| run in the browser (obviously that doesn 't required specific
| input).
|
| Not a criticism, love everything that can provide hassle-free
| onboarding to learn a new language, just curious.
| leoh wrote:
| My hypothesis -- worth testing -- is that this will be
| significantly faster
| kaoD wrote:
| Can anyone point to a "practical Haskell" tutorial/book/whatever
| for people that already know functional programming? I'm in this
| sour spot where most tutorials are boring to me so I just can't
| follow through.
|
| I know what a monad is. What a typeclass is. Even what HKTs are.
| I can make sense of _" a monad is just a monoid in the category
| of endofunctors"_ if I give it a few minutes to unravel the ball
| of twine... But I wouldn't be able to code a "ToDo list" in
| Haskell if my life depended on it.
|
| Pls help.
| thethimble wrote:
| You might be better served talking to ChatGPT/Claude so it can
| tailor explanations based on your level of understanding. I've
| found that being super clear about concepts you understand well
| vs concepts you're unclear about makes for really effective
| explanations.
| joelwilliamson wrote:
| Have you tried Real World Haskell?
| kaoD wrote:
| No, but the table of contents looks promising, thanks!
| elbear wrote:
| See also What I Wish I Knew When Learning Haskell:
| https://sdiehl.github.io/wiwinwlh/
|
| It's more up to date.
| cosmic_quanta wrote:
| That is a really tough spot to be in. I don't know of any
| content that's aimed at someone like you.
|
| You might be interested in reading the Monday Morning Haskell
| blog[0] series, which presents examples of how to do certain
| tasks in Haskell. See [1] for an example.
|
| [0]: https://mmhaskell.com/blog
|
| [1]: https://mmhaskell.com/blog/2025/5/19/comparing-code-
| leetcode...
| antonvs wrote:
| Where does your functional programming experience come from?
| That could help in finding a suitable resource.
| kaoD wrote:
| From Haskell I guess. Just not real world Haskell. I have
| never written more than a few hundred lines, but I've read a
| lot about its concepts in the abstract (and partially applied
| some insofar as other languages have let me.)
| shaunxcode wrote:
| Haskell school of music
| yobbo wrote:
| Build a snake game in stages: https://github.com/lsmor/snake-
| fury
|
| Build a small web-app:
| https://jaspervdj.be/posts/2017-12-07-getting-things-done-in...
| (the video link is down, but exists somewhere on youtube.)
| simonmic wrote:
| I always liked https://www.extrema.is/articles/haskell-
| books/haskell-tutori... . But there's a lot out there. Have a
| look at https://joyful.com/Haskell+map . Or: read code. Or,
| just build practical stuff and seek help in the chats/fora when
| you hit problems.
| kreyenborgi wrote:
| https://www.manning.com/books/haskell-in-depth is meant for
| you!
|
| Also https://learn-haskell.blog/
| ljwall wrote:
| Seconding Haskell in Depth.
|
| But aside from resources, if you actually have something you
| want to build in Haskell, just go for it and struggle through
| --- that's the best way to learn that I've found
| argiopetech wrote:
| I typically recommend LYAH
| (https://learnyouahaskell.github.io/chapters.html), followed by
| Real World Haskell (already mentioned).
| irusensei wrote:
| Can the Haskell people help me refresh my memory?
|
| I remember running a Haskell interpreter on an HP Jornada running
| Jlime Linux. It was a long time ago in high school and I felt it
| was great because I thought it was a convenient way to do math
| classes since I could input some math formulas directly into the
| interpreter pretty much as they were. Definitely better than the
| Cassio scientific calculator my math teacher had us use.
|
| It ran from a CF card so there was no chance it was as big as
| GHC. I can't seem to find the name of the interpreter.
| AntiRush wrote:
| I'm guessing it was Hugs:
|
| https://www.haskell.org/hugs/
| irusensei wrote:
| Yes! Thank you.
|
| > Hugs is no longer in development
|
| The last release was in 2006 it seems. No wonder it was hard
| to google it. Its also interesting knowing someone compiled
| and published this interpreter for the Jornada Super-H CPU.
| dmjio wrote:
| Yes we do.
|
| https://github.com/haskell-miso
___________________________________________________________________
(page generated 2025-11-02 23:01 UTC)