gpt4 book ai didi

haskell - 惯用的 Haskell 是否会像 head、init、tail 等那样尝试消除对操作 fst 和 snd ?

转载 作者:行者123 更新时间:2023-12-03 03:55:28 26 4
gpt4 key购买 nike

这是一个不适合我的功能,我想我需要摆脱 fst。

flagHolidays :: [(C.Day,Availability)] -> Handler [(C.Day,Availability)]
flagHolidays dayPairs = do
let days = map fst dayPairs
yepNope = Prelude.map isHoliday days
availability = Prelude.map flagAvailability yepNope
return $ Prelude.zip days availability

我能想到的唯一方法是一个非常丑陋的模式匹配,类似于(x,y):(xs,ys)。删除 fst 有意义吗?如果是这样,模式匹配此对列表的最佳方法是什么?

最佳答案

在惯用的 Haskell 代码中不使用 headtailinit 的原因是它们不是全部函数 - 一些输入导致错误发生。将空列表传递给任何这些函数都会导致空列表异常。

fstsnd 没有这个问题,因为没有输入可以传递给那些会导致异常的函数。因此没有理由尝试避免这些功能。

您的函数可以写得更好(其他评论提供了有关此的详细信息),但这不是由于使用 fstsnd

关于haskell - 惯用的 Haskell 是否会像 head、init、tail 等那样尝试消除对操作 fst 和 snd ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8220458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com