Skip to content

Commit 9c1b7f4

Browse files
authored
Create Setter.hs
1 parent 168cf86 commit 9c1b7f4

File tree

1 file changed

+25
-0
lines changed

1 file changed

+25
-0
lines changed

haskell/Setter.hs

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
module Main (main) where
2+
3+
data Record = Record
4+
{ recordA :: String
5+
, recordB :: String
6+
, recordC :: String
7+
} deriving (Show)
8+
9+
setter :: String -> String -> Record -> Record
10+
setter "a" v r = r { recordA = v }
11+
setter "b" v r = r { recordB = v }
12+
setter "c" v r = r { recordC = v }
13+
setter _ _ r = r
14+
15+
xs :: [(String, String)]
16+
xs =
17+
[ ("a", "damn")
18+
, ("c", "fib")
19+
, ("g", "derp")
20+
, ("b", "bar")
21+
, ("a", "foo")
22+
]
23+
24+
main :: IO ()
25+
main = print $ foldr (\(k, v) r -> setter k v r) (Record "" "" "") xs

0 commit comments

Comments
 (0)