Bool
False
True
Int
Integer
0
1
-5
42
Float
Double
0.0
3.14
1.5e9
-1.0
Char
'A'
'B'
'x'
'/'
'\n'
String
""
"Haskell"
"Hello world!\n"
t1 = (False, 42) :: (Bool,Int) t2 = ("Hello",False,5) :: (String,Bool,Int) t3 = ("Haskell",True,4,0.5) :: (String,Bool,Int,Double) t0 = () :: () -- the empty tuple
l1 = [2,3,5,7,11] :: [Integer] l2 = ["Hello","world"] :: [String] l3 = [] :: [Bool] l4 = [] :: [Int] -- the empty list has many types
data Maybe a = Nothing | Just a
m1 = Nothing :: Maybe a
m2 = Just "Hello" :: Maybe String
data Either a b = Left a | Right b e1 = Left "Hello" :: Either String b e2 = Right 42 :: Either a Int e3 = [Right 42,Left "Hello"] :: [Either String Int]
power :: Integer -> Integer -> Integer exampleFunction :: (Bool, Int, String) -> Bool doubles :: [Integer] -> [Integer] summary :: [String] -> String
[[Double]]
[(Int,String)]
([Int],[String])
[(Int,[String])]
[(Int->String,[Int])] -> String
[(a->b,a)] -> [b]
length :: [a] -> Int (++) :: [a] -> [a] -> [a] fst :: (a,b) -> a map :: (a -> b) -> [a] -> [b] filter :: (a->Bool) -> [a] -> [a]
show :: Show a => a -> String (+),(*) :: Num a => a -> a -> a (==) :: Eq a => a -> a -> Bool (<), (<=) :: Ord a => a -> a -> Bool