__ __ __ __ ____ ___ _______________________________________________ || || || || || || ||__ Hugs 98: Based on the Haskell 98 standard ||___|| ||__|| ||__|| __|| Copyright (c) 1994-2005 ||---|| ___|| World Wide Web: http://haskell.org/hugs || || Bugs: http://hackage.haskell.org/trac/hugs || || Version: Sep 2006 _______________________________________________ Haskell 98 mode: Restart with command line option -98 to enable extensions Type :? for help Main> :edit Main> :r Main> :edit Main> :r Main> makePairs [] [] Main> makePairs [1,2,3,4] [(1,2),(3,4)] Main> makePairs [1,2] [(1,2)] Main> :r Main> makePairs [1,2,3,4] [(1,2),(3,4)] Main> makePairs [1,2] [(1,2)] Main> :type makePairs makePairs :: [a] -> [(a,a)] Main> :r ERROR file:{Hugs}\packages\hugsbase\Hugs.hs:26 - Type error in application *** Expression : (x1,x2) : makePairs xs *** Term : (x1,x2) *** Type : (a,a) *** Does not match : a *** Because : unification would give infinite type Prelude> :r Main> :type makePairs makePairs :: [a] -> [a] Main> :r Main> :type makePairs makePairs :: [a] -> [(a,a)] Main> :r Main> :type makePairs makePairs :: [a] -> [(a,a)] Main> makePairs [2,2] [(2,2)] Main> makePairs [2] [(2,2)] Main> :r Main> :type makePairs makePairs :: Num a => [a] -> [(a,a)] Main> :r Main> :type makePairs makePairs :: Num a => [b] -> [(b,a)] Main> [ e | e <- [1,2,3,4], even e ] [2,4] Main> [ e | e <- [1,2,3,4] ] [1,2,3,4] Main> [ e | e <- [1,2,3,4], even e, e > 2 ] [4] Main> :r Main> startsRight "hello" False Main> startsRight "belo" True Main> startsRight "b" True Main> startsRight "brad" True Main> [ s | s <- ["abc", "bcd", "def"], startsRight s ] ["bcd"] Main> [ square s | s <- ["abc", "bcd", "def"], startsRight s ] ERROR - Cannot infer instance *** Instance : Num [Char] *** Expression : [ square s | s<-["abc","bcd","def"], startsRight s ] Main> [ square e | e <- [1..10] ] [1,4,9,16,25,36,49,64,81,100] Main> [ square e | e <- [1..10], even e ] [4,16,36,64,100] Main> [ square e | e <- [1..10], even e ] [4,16,36,64,100] Main> [ x | x <- [ square e | e <- [1..10], even e ], x < 50 ] [4,16,36] Main> [ e | e <- [ square e | e <- [1..10], even e ], e< 50 ] [4,16,36] Main> [ (n,m) | n <- [1..10], m <- [20,30] ] [(1,20),(1,30),(2,20),(2,30),(3,20),(3,30),(4,20),(4,30),(5,20),(5,30),(6,20),(6,30),(7,20),(7,30),(8,20),(8,30),(9,20),(9,30),(10,20),(10,30)] Main> [ (n,m) | n <- [1..10], m <- [20,30], n*m < 20 ] [] Main> [ (n,m) | n <- [1..10], m <- [20,30], n*m < 80 ] [(1,20),(1,30),(2,20),(2,30),(3,20)] Main> Main> :r Main> evens 20 [2,4,6,8,10,12,14,16,18,20] Main> :r Main> sumOfTriples [[1]] [] Main> sumOfTriples [[1,2,3]] [6] Main> sumOfTriples [[1,2,3], [2,3], [1,5,6]] [6,12] Main>