Installing Helm on Windows with stack (instructions)

Installing Helm on Windows with stack (instructions)

Today I spent several hours trying to get Helm to compile and the examples to run. I'm currently using Windows 10, so my installation instructions are "coming soon!" (as of 2014 — is Helm even actively developed?).

I finally got it working. I'll outline my steps below for posterity (this is from memory, so hopefully I don't miss anything).

  1. Install Gtk2Hs.
    • Update pacman definitions: stack exec -- pacman -Sy
    • Install gtk2: stack exec -- pacman -S mingw-w64-x86_64-gtk2
    • Install pkg-config: stack exec -- pacman -S mingw-w64-x86_64-pkg-config
    • Install gtk2hs-buildtools: stack exec -- pacman -S mingw-w64-x86_64-gtk2hs-buildtools
    • Install gtk: stack exec -- pacman -S mingw-w64-x86_64-gtk
  2. Install SDL2: stack exec -- pacman -S mingw-w64-x86_64-SDL2
  3. Clone the Helm repo: git clone
  4. Change directory to helm and edit stack.yml:
    • Increase the sdl2 version to 2.3.0 or above (to overcome this issue). My extra-deps contains: - sdl2-2.3.0
  5. Build helm with stack build.

If you want to run the examples, you will have to install helm (I don't know why, but running the examples with stack exec appears to do absolutely nothing — no error or anything else).

  1. Install helm: stack install helm (from inside helm directory, if it matters). If you can't run the executables due to missing libraries, try the following:
  2. Add location of the .dll files to your path.
    • Identify the location of the .dll files. Mine were at /c/Users/kyle/AppData/Local/Programs/stack/x86_64-windows/msys2-20150512/mingw64/bin. For some reason, this is not in my bash path.
    • (With these next two commands, don't forget to edit in your name).
    • To see if you can run the Helm examples, run: PATH='$PATH:/c/Users/kyle/AppData/Local/Programs/stack/x86_64-windows/msys2-20150512/mingw64/bin' helm-example-hello.exe.
    • If that works, add export PATH='$PATH:/c/Users/kyle/AppData/Local/Programs/stack/x86_64-windows/msys2-20150512/mingw64/bin' to your ~/.bashrc file.

I don't know why I had to do some of the workarounds, but I finally got things working this way. If you have any questions or comments, please let me know!

Submitted August 22, 2017 at 08:21AM by 0not
via reddit

Does it bother anyone else that record assignment isn’t an actual function.

Does it bother anyone else that record assignment isn’t an actual function.

Currently you can modify values using the following syntax:

foo { bar = baz } 

Which doesn't really fit with the rest of Haskell's syntax IMO. And also one more tangible downside is that when you want to pass in a function that modifies said value to another function you have to do:

qux (\x -> x { bar = baz }) 

Whereas if instead { ... } is a function of type A -> A. So:

{ bar = baz } foo 

That way when you want to pass in the modifying function to another function you get the more concise and elegant:

qux { bar = baz } 

I realize backwards compatibility is an issue, but still wanted to bring it up for discussion. Perhaps a different syntax like or even ( ... ), where having a non-let = sign distinguishes it from other uses of parenthesis.

Submitted August 22, 2017 at 02:24PM by Tysonzero
via reddit