Installation
under CentOS/Fedora
# yum install ghc
Version
[[email protected] haskell]# ghc -v
Glasgow Haskell Compiler, Version 7.0.4, for Haskell 98, stage 2 booted by GHC version 7.0.4
Change prompt
echo :set prompt "ghci> " > ~/.ghci
Command
# Boolean
ghci> True && False
False
# call function, get successor of 8
ghci> succ 8
9
# load scripts
## echo doubleMe x = x + x > baby.hs
ghci> :l baby.hs
[1 of 1] Compiling Main ( baby.hs, interpreted )
Ok, modules loaded: Main.
ghci> doubleMe 9
18
# Concatenation between list and string
ghci> [1,2,3,4] ++ [9,10,11,12]
[1,2,3,4,9,10,11,12]
or
ghci > ‘A‘: "Small cat"
"A Small cat"
or
ghci> 5:[1,2]
[5,1,2]
# List operation
## get the element that‘s index = 3
ghci> "123456" !! 3
‘4‘
## comparing
ghci> [3,2,1] > [2,1,0]
True
## head vs tail, init vs last
ghci> head [5,4,3,2,1]
5
ghci> tail [5,4,3,2,1]
[4,3,2,1]
ghci> last [5,4,3,2,1]
1
ghci> init [5,4,3,2,1]
[5,4,3,2]
## length
ghci> length [5,4,3,2,1]
5
## is null or not
ghci> null [1,2,3]
False
ghci> null []
True
## reverse list
ghci> reverse [5,4,3,2,1]
[1,2,3,4,5]
## take the first N elements
ghci> take 3 [5,4,3,2,1]
[5,4,3]
ghci> take 1 [3,9,3]
[3]
ghci> take 5 [1,2]
[1,2]
ghci> take 0 [6,6,6]
[]
## drop the first N elements
ghci> drop 3 [8,4,2,1,5,6]
[1,5,6]
ghci> drop 0 [1,2,3,4]
[1,2,3,4]
ghci> drop 100 [1,2,3,4]
[]
## element in list or not
ghci> 4 `elem` [1 ,4 ]
True
or
ghci> elem 4 [1 , 4]
True
## range
ghci> [1..4]
[1,2,3,4]
## replicate
ghci> replicate 3 10
[10,10,10]
## List Comprehension
ghci> [x * 2 | x <- [1..10] ]
[2,4,6,8,10,12,14,16,18,20]
ghci> [x*2 | x <- [1..10], x *2 >= 12]
[12,14,16,18,20]
Note
doubleSmallNumber‘ is valid as a method name