gpt4 book ai didi

haskell - 模式匹配与构造函数

转载 作者:行者123 更新时间:2023-12-03 16:24:41 24 4
gpt4 key购买 nike

对于不同的数据构造函数,我有两个几乎相同的函数,想知道是否有可能将两者统一起来。一个简约的例子如下

f_maybe :: Maybe a -> a -> a
f_maybe (Just x) _ = x
f_maybe _ x = x


data T a = T1 a | T2 Int | T3

f_t :: T a -> a -> a
f_t (T1 x) _ = x
f_t _ x = x

是一种仅定义一个由类型构造函数(Maybe 或 T)和数据构造函数(Just 或 T1)参数化的函数的方法吗?

最佳答案

您可以编写一个统一的函数,它具有您想要的任何行为并适用于任何
参数类型,但没有具体数据就无法进行模式匹配
构造函数(多态),AFAIK。

问问自己这个统一函数的类型签名是什么样的?
类型签名代表功能背后的想法。 MaybeT 是做什么的
在这种情况下有共同点,以便您统一工作的功能
他们?你想建立什么样的抽象?

从你的问题中,所有这些事情都不清楚。如果你的想法只是
削减样板(这不完全是样板),然后不要尝试
统一不同的东西只是为了缩短代码,你会得到
最后有些令人困惑。

类型实际上应该不同,函数应该拒绝参数
错误的类型,不适用于任何看起来很相似的东西。也
多态代码通常不是一个好主意,因为错误的代码可能会发生
对类型检查器有一些意义,然后你会得到程序
编译,但做了错误的事情。

关于haskell - 模式匹配与构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36663013/

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