-4
我有以下哈斯克爾方法哈斯克爾:定義使用展開地圖功能
unfold :: (a -> Bool) -> (a -> b) -> (a -> a) -> a -> [b]
unfold p h t x
| p x = []
| otherwise = (h x):(unfold p h t (t x))
我怎樣才能用這個給定的展開方法定義正序幕映射f X方法。
我有以下哈斯克爾方法哈斯克爾:定義使用展開地圖功能
unfold :: (a -> Bool) -> (a -> b) -> (a -> a) -> a -> [b]
unfold p h t x
| p x = []
| otherwise = (h x):(unfold p h t (t x))
我怎樣才能用這個給定的展開方法定義正序幕映射f X方法。
如果定義:
map' :: (a -> b) -> [a] -> [b]
map' f = unfold null (f.head) tail
然後
\> map' show [1..5]
["1","2","3","4","5"]
\> map' (+1) []
[]