Vla*_*che 1 haskell functional-programming
我对函数式编程和Haskell都很陌生,所以我不确定我是否正确地提出了这个问题,或者它是否有意义,但我决定尝试,因为我没有找到任何有用的东西.我基本上试图实现一个可以返回a Int,a String或List 的函数.我知道我可以用它Either来返回两种类型中的一种,但我想返回三种或更多种中的一种.我尝试定义一个新类型,但我卡住了.
data Rets = Int | String | Bool
checkInt :: Rets -> Bool
check x = case x of
Int x -> True
Run Code Online (Sandbox Code Playgroud)
checkInt应该返回,True如果给出Int,它只是为了测试,但无论如何我包括它.
我知道我的问题很乱,所以我会感谢任何解释.提前致谢!
您定义了一个具有三个构造函数的类型,每个构造函数都接受0 所以Int x不会是你的类型的有效模式,它只是Int -> true.当然这也意味着你不能在你的类型中存储任何值,因此它不能达到你想要的效果.
你想要的是这样的:
data Rets = IntRet Int | StringRet String | BoolRet Bool
Run Code Online (Sandbox Code Playgroud)
这定义了一个名为三个构造IntRet,StringRet以及BoolRet,其采取Int,String并Bool分别.这样你就可以使用等来构造值IntRet 42,BoolRet True然后将它们模式匹配IntRet x,依此类推.
| 归档时间: |
|
| 查看次数: |
118 次 |
| 最近记录: |