HaskellTips's profile picture. Tips, tricks and hacks by @jfischoff

Haskell Tips

@HaskellTips

Tips, tricks and hacks by @jfischoff

Haskell Tips reposted

So apparently a lot of peeps still don't know you can avoid pressing 'up' a billion times going through :reload's in GHCi by adding this to your `~/.haskeline` file: historyDuplicates: IgnoreAll Have fun.


Haskell Tips reposted

Open this page: hackage.haskell.org/package/lens ... and then type 's' to open a quick search for any exported symbols in lens


Usually one starts with the first error and works forward. With the default setting one has to scroll up over and over again.


Use `ghci -freverse-errors` or `stack repl --ghc-options=-freverse-errors` to reverse the error order; see the first error with no scrolling


() does not add a “null” value to every type, hell no; () is a “dull” value in a type of its own: () - @pigworker personal.cis.strath.ac.uk/conor.mcbride/…


Haskell Tips reposted

WARNING: advanced haskell tips

stdlib's tweet image. WARNING: advanced haskell tips

Avoid lengthy computation in a exception handler with `catch`. The exception handler has async exceptions masked: hackage.haskell.org/package/base-4…


Careful with your foralls data A = forall a. A {x :: a} -- existential quantification data A = A {x :: forall a. a} -- polymorphic component


YMMV

I've only found it necessary on 7.10, the parallel gc bugs seem to be mostly fixed in >= 8.0



Use the '+RTS -qg' flag to speed up your programs. /ht @stdlib inner-haven.net/posts/2017-05-…


IORef can't unbox primitives, but URef, Ptr and others can and are thus faster: medium.com/@jonathangfisc…


class ToB a where to∷a → B class FromB a where from∷Parser a -- vs class Bable a where to∷a → B from∷Parser a medium.com/@jonathangfisc…


(Pattern Matching : Data Constructors :: Type Class Instance Selection : Type Constructors) / ordering medium.com/@jonathangfisc…


If you are using `putStr` you probably want to > import System.IO > hSetBuffering stdout NoBuffering


Data.List.\\ doesn't remove duplicates: > import Data.List > [1, 1, 2] \\ [1, 2] [1] For set difference use Data.Set.\\


When in doubt, install `happy`.


If you want to run a function from the command line: > echo 'foo "hello"' | ghci src/File.hs If you want to run `main`: > runhaskell Main.hs


To list all @Hackage packages > cabal list With just the word "lens" > cabal list lens For a summary of the package 'lens' > cabal info lens


Loading...

Something went wrong.


Something went wrong.