Code for 29 feb.
This commit is contained in:
parent
a59151d12b
commit
10903c741a
47
2016-02-29/DataTypes.hs
Normal file
47
2016-02-29/DataTypes.hs
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
module DataTypes where
|
||||||
|
|
||||||
|
data User = NormalUser { userName :: String
|
||||||
|
, userAge :: Int }
|
||||||
|
| Admin { userName :: String
|
||||||
|
, userAge :: Int
|
||||||
|
, adminRole :: String }
|
||||||
|
deriving (Show)
|
||||||
|
|
||||||
|
data FileAccessMode = Read | Write | Append
|
||||||
|
|
||||||
|
data Expr = IntLiteral Int
|
||||||
|
| StringLiteral String
|
||||||
|
| Addition Expr Expr
|
||||||
|
|
||||||
|
showUser :: User -> String
|
||||||
|
showUser (NormalUser name age) =
|
||||||
|
("Name: " ++ name ++ " Age: " ++ show age)
|
||||||
|
showUser (Admin name age role) =
|
||||||
|
("Name: " ++ name ++ " Age: " ++ show age ++ " Role: " ++ role)
|
||||||
|
|
||||||
|
data IntList = EmptyList | List Int IntList
|
||||||
|
|
||||||
|
iNull :: IntList -> Bool
|
||||||
|
iNull x = case x of { EmptyList -> True; _ -> False }
|
||||||
|
|
||||||
|
iLen :: IntList -> Int
|
||||||
|
iLen x = case x of { EmptyList -> 0; List i rest -> 1 + iLen rest }
|
||||||
|
|
||||||
|
iSum x = case x of { EmptyList -> 0; List i rest -> i + iSum rest }
|
||||||
|
iDouble x = case x of { EmptyList -> EmptyList;
|
||||||
|
List i rest -> iDouble (List (i*2) rest) }
|
||||||
|
iEven x = case x of { EmptyList -> EmptyList;
|
||||||
|
List a rest -> if even a then List a (iEven rest) else iEven rest }
|
||||||
|
|
||||||
|
data BST = EmptyNode | Node {left::BST, value::Int, right::BST} deriving (Show)
|
||||||
|
|
||||||
|
inOrder :: BST -> [Int]
|
||||||
|
inOrder EmptyNode = []
|
||||||
|
inOrder (Node l v r) = inOrder l ++ [v] ++ inOrder r
|
||||||
|
|
||||||
|
find :: BST -> Int -> Bool
|
||||||
|
find EmptyNode _ = False
|
||||||
|
find n@(Node l v r) x
|
||||||
|
| x == v = True
|
||||||
|
| x > v = find r x
|
||||||
|
| otherwise = find l x
|
Loading…
Reference in New Issue
Block a user