gpt4 book ai didi

haskell - func::也许(Int) -> 也许(Int)

转载 作者:行者123 更新时间:2023-12-02 11:14:33 25 4
gpt4 key购买 nike

我做了一些研究,但没有找到任何东西。我不明白这样的函数是如何工作的:

func :: Maybe (Int) -> Maybe (Int)

我应该如何进行模式匹配?我已经尝试过,但没有成功:

func Just a  = Just a | otherwise = Nothing
func Nothing = Just Nothing | otherwise = Nothing

我怎样才能做到这一点?

错误消息:

exercises6.hs:83:22: error: parse error on input ‘|’
|
83 | func Just a = Just a | otherwise = Nothing
| ^

最佳答案

您对两种可能的情况进行模式匹配。 Maybe a 有两个数据构造函数:一个 Nothing 和一个 Just ... 以及它所包装的值 ...。没有 |否则当你进行模式匹配时部分。管道字符 (|) 用于 guards [lyah] .

因此,您可以使用以下方法增加 Just 中的值:

func :: Maybe Int -> Maybe Int
func <b>(Just x)</b> = Just (x+1)
func <b>Nothing</b> = Nothing

这里需要用括号括起来Just x,如 @chepner says 。否则,它将被解析为 Just 是第一个参数,x 是第二个参数。

因为也许Functor typeclass的一个实例,您可以使用fmap :: Functor f => (a -> b) -> f a -> f b这里:

func :: Maybe Int -> Maybe Int
func = <b>fmap</b> (1+)

关于haskell - func::也许(Int) -> 也许(Int),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58827732/

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