[Haskell-cafe] [ANN] Haskell Cheatsheet v1.0
Thomas Hartman
tphyahoo at gmail.com
Sat Oct 11 07:33:16 EDT 2008
Very nice!
I have my own cheat list, which are haskell commands I find useful but
find inconvenient or difficult to look up in the supplied
documentation. I actually hardwire my cheats into .bashrc doing
something like
thartman_haskell_cheatting() {
cat << EOF
blah blah
cheat
}
so i can quickly see all my haskell cheats using tab completion. but a
pdf is even nicer :)
**************************
thartman at thartman-laptop:~/Desktop>thartman_haskell_oneliners
ghc -e '1+2'
thartman at thartman-laptop:~/Desktop>thartman_haskell_regex_hints
cabal install pcre-regex
Most likely want:
Prelude Text.Regex.PCRE> "user123" =~ "^(user)(\d*)$" ::
(String,String,String,[String])
("","user123","",["user","123"])
That is: (before match, match, after match, subgroups)
or maybe
Prelude Text.Regex.PCRE> "user123 user456" =~ "(u(se)r)(\d*)" :: [[String]]
[["user123","user","se","123"],["user456","user","se","456"]]
if you need all submatches of all matches
since
Prelude Text.Regex.PCRE> "user123 user456" =~ "(user)(\d*)" ::
(String,String,String,[String])
("","user123"," user456",["user","123"])
doesn't quite do what I want -- no submatches
and there's no instance for :: (String,String,String,[String])
I don't need all submatches of all matches very often though.
:: Bool -- did it match
:: String -- first match
:: [String] -- every match
:: :: (String,String,String) -- before, matched, after
http://www.serpentine.com/blog/2007/02/27/a-haskell-regular-expression-tutorial/
thartman at thartman-laptop:~/Desktop>thartman_haskell_testing_things
import Data.Test.HUnit
runTestTT $ TestCase $ assertEqual "meh" 1 2
runTestTT $ TestList [ TestCase $ assertEqual "meh" 1 2 ]
thartman at thartman-laptop:~/Desktop>thartman_haskell_hints
offline documentation:
ghc-pkg describe bytestring | grep -i doc
or probably just
haddock-interfaces:
/usr/local/share/doc/ghc/libraries/bytestring/bytestring.haddock
haddock-html: /usr/local/share/doc/ghc/libraries/bytestring
note to self:
start using cabal install --global (or whatever the flag is)
so all documentation is browsable from one place
Use language pragmas, with commas
And you can't put LANGUAGE and OPTIONS_GHC in the same pragma
{-# LANGUAGE NoMonomorphismRestriction, PatternSignatures #-}
{-# OPTIONS -fglasgow-exts #-}
Debugging
toVal.hs:30:17:
Couldn't match expected type 'blee'
against inferred type 'bleh'
bleh is whatever is at 30:17
blee is something that's wanted by whatever is calling the value at 30:17
If the error is "in the definition of" some function,
then probably one function case conflicts with another, you can
ignore other functions.
In this case you will only get one line:col to look at.
If there are more than one line:col to look at, possibly separate
functions are in conflict.
So, smart to always fix "in the definition of" type errors first.
Still baffled? Won't compile?
Give top-level functions type signatures. Won't hurt, might help.
:set -fwarn-missing-signatures
or {-# OPTIONS -fwarn-missing-signatures #-}
Start commenting out calling functions until it compiles, and then
look at the signatures.
And then type the signatures in explicitly... does something look funny?
Like, wrong number of args? Maybe currying went wrong.
tag and bundle a distribution:
darcs tag 0.2
cabal configure
cabal sdist
cd dist; unzip, verify install does the right thing
http://hackage.haskell.org/packages/upload.html
check upload, and upload.
see also http://en.wikibooks.org/wiki/Haskell/Packaging
group module imports from multiple modules in one place:
module MyInductiveGraph (
module Data.Graph.Inductive,
module EnoughFlow
)
where
import Data.Graph.Inductive
import EnoughFlow
**************************
2008/10/11 Justin Bailey <jgbailey at gmail.com>:
> All,
>
> I've created a "cheat sheet" for Haskell. It's a PDF that tries to
> summarize Haskell 98's syntax, keywords and other language elements.
> It's currently available on hackage[1]. Once downloaded, unpack the
> archive and you'll see the PDF. A literate source file is also
> included.
>
> If you install with "cabal install cheatsheet", run "cheatsheet"
> afterwards and the program will tell you where the PDF is located.
>
> The audience for this document is beginning to intermediate Haskell
> programmers. I found it difficult to look up some of the less-used
> syntax and other language stumbling blocks as I learned Haskell over
> the last few years, so I hope this document can help others in the
> future.
>
> This is a beta release (which is why I've limited the audience by
> using hackage) to get feedback before distributing the PDF to a wider
> audience. With that in mind, I welcome your comments or patches[2].
>
> Justin
>
> [1] http://hackage.haskell.org/cgi-bin/hackage-scripts/package/CheatSheet
> [2] git://github.com/m4dc4p/cheatsheet.git
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
More information about the Haskell-Cafe
mailing list