Stel we hebben een standaard boter-kaas en eieren situatie.
Wat ik hoop te bereiken is een lijstje te genereren met tuples van (func, func) die mij vervolgens weer, gegeven een board, een field kunnen aanreiken. Maar dat lijstje is enkel voor blank fields. Dus daar gaan we:
(Disclaimer: ja, de lijst met combinaties is nou niet bepaald uitbreid-vriendelijk, maar it'll have to do.... )
Echter krijg ik zoals enkelen van jullie met ervaring in leren van functioneel, wat problemen met types matchen. Op één of andere manier "zie" ik het gewoon even niet.....
Haskell:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| data Field = X | O | B deriving (Eq, Ord) type Row = (Field, Field, Field) type Board = (Row, Row, Row) {- Begin of tuple helper functions -} fst3 :: (a,b,c) -> a fst3 (a,_,_) = a scn3 :: (a,b,c) -> b scn3 (_,b,_) = b thrd3 :: (a,b,c) -> c thrd3 (_,_,c) = c {- End of tuple helper functions -} |
Wat ik hoop te bereiken is een lijstje te genereren met tuples van (func, func) die mij vervolgens weer, gegeven een board, een field kunnen aanreiken. Maar dat lijstje is enkel voor blank fields. Dus daar gaan we:
Haskell:
1
2
3
| findblanks :: Board -> [(a, b)] findblanks board = filter (\(row,col) -> col (row board) == B) list where list = [(fst3, fst3), (fst3, scn3), (fst3, thrd3), (scn3, fst3), (scn3, scn3), (scn3, thrd3), (thrd3, fst3), (thrd3, scn3), (thrd3, thrd3)] |
(Disclaimer: ja, de lijst met combinaties is nou niet bepaald uitbreid-vriendelijk, maar it'll have to do.... )
Echter krijg ik zoals enkelen van jullie met ervaring in leren van functioneel, wat problemen met types matchen. Op één of andere manier "zie" ik het gewoon even niet.....

edit: Wat ik met dat tussenstukje bedoel is dat ik later weer dit ongeveer heb:Couldn't match expected type `b' with actual type `Row -> Field'
`b' is a rigid type variable bound by
the type signature for findblanks :: Board -> [(a, b)]
at Main.hs:143:15
The function `col' is applied to one argument,
but its type `b' has none
In the first argument of `(==)', namely `col (row board)'
In the expression: col (row board) == B
Haskell:
1
| boardtoField :: Board -> (functie, functie) -> Field |
[ Voor 4% gewijzigd door afraca op 06-10-2013 17:49 ]
IMDB vote history | Next-gen OS, audio en video player, search engine en Movie DB