这是昨天到期的作业,但我不希望答案只是指向正确的方向请;)
我正在尝试unzip使用map和lambda与haskell 实现函数.
:t unzip
[(a,b)] -> ([a],[b])
Run Code Online (Sandbox Code Playgroud)
所以我认为lambda看起来像是\(a,b)->([a],[b])那种作品,除了我从我的输入中得到的[(4,5),(7,5),(9,7)] =>
[([4],[5]),([7],[5]),([9],[7])]但我本来希望看到的[4,7,9],[5,5,7].那么我在这里做错了什么?
提前感谢我指出了正确的方向
那么,map :: (a -> b) -> ([a] -> [b])返回一个清单吧?而且你希望你的函数返回两个列表,所以......你需要使用map两次.这是你填写的骨架:
unzip xs = (map {- ??? -} xs, map {- ??? -} xs)
Run Code Online (Sandbox Code Playgroud)
不幸的是,坚持使用map是低效的,因为这意味着你必须在列表上进行两次传递.你可以做得更好,但这很棘手!试一试,然后通过将其与GHC的实施进行比较来了解您的表现.
| 归档时间: |
|
| 查看次数: |
1168 次 |
| 最近记录: |