Skip to content

NeilNjae/eva-haskell-demo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eva-demo

Code to start conversations about Haskell.

Learn you a Haskell, Introduction to Haskell 98, and Hackage are good resources.

The Stack documentation and How I Start: Haskell are good sources of using the tools.

Toolchain

I'm using the basic Haskell Platform installation, together with stack to manage the packages and dependencies (install with

$ sudo aptitude install haskell-platform haskell-stack

), then updgrade with

 stack upgrade --binary-only

as the version in the Ubuntu repos is too old to work with current Haskell Stack package sets.

Creating the repository and project

Create the repository as normal: create the project in Gitolite, clone it, and insert the .gitignore and README.md files.

There's just one package, with the code in the src directories of the root directory.

Create the basic stack project. This will create a new directory. Note that this new directory name can't have a hyphen-delimited word that's just digits, so the project will have to be advent-of-code

stack new eva-demo --bare simple

Modify the stack.yaml file as needed, such as adding the ghc-options stanza.

Creating packages

Each package lives in a separate directory, with its own package.yaml file and code in the src directory. (I based this configuration from mstksg's setup.)

Compile with

stack build

or

stack build main

Run with

stack exec main

If you want to pass in additional RTS parameters, do it like this:

stack exec -- main +RTS -K0 -RTS

Run interactively with

stack ghci main

or

stack ghci main:exe:main

if the first form is ambiguous.

To profile, use

stack build --executable-profiling --library-profiling --ghc-options="-fprof-auto -rtsopts" advent01

then run with

stack exec --profile -- advent01 +RTS -p -hy

Generate the profile graph with

stack exec hp2ps advent01.hp

Packages

Stack is using the lts-16.10 resolver for packages, so make sure you read the correct documentation for the packages included in it.

About

A few sample snippets for talking about Haskell

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published