gpt4 book ai didi

haskell - 不将 char 传递给在 Haskell 中期望它的函数

转载 作者:行者123 更新时间:2023-12-01 08:48:31 24 4
gpt4 key购买 nike

我正在使用 Haskell,并且我定义了以下类型

--Build type Transition--
data Transition = Transition {
start_state :: Int,
symbol :: Char,
end_state :: Int
} deriving Show

我希望能够定义以下转换

Transition 0 '' 1 

这意味着“没有符号给出的转换”(我需要它来计算 NFA 的 epsilon 闭包)。我怎样才能做到这一点?谢谢!

最佳答案

定义类型的想法是传递给该字段的每个值都是该类型的“成员”。 Char 只包含字符(而空字符串是not 一个字符)和undefined (但建议 在此处使用 undefined)。

通常如果你想让值可选,你可以使用 Maybe a 类型,所以:

data Transaction = Transaction {
start_state :: Int,
symbol :: <b>Maybe Char</b>,
end_state :: Int
} deriving Show

所以现在我们可以传递两种值:Nothing,因此应该被解释为“no character”,或者Just x,与 x 一个字符,因此这充当一个字符,所以在你的情况下,这将是:

Transaction 0 <b>Nothing</b> 1

Maybe 也是 FunctorApplicativeMonad 的实例,应该可以与 Maybe 类型非常方便(是的,它有时会引入一些额外的工作,但是通过使用 fmap 等,模式匹配转移到 Maybe Char 的数量应该相当低)。

Note: like @amalloy says, an NFA (and DFA) has Transitions, not Transactions.

关于haskell - 不将 char 传递给在 Haskell 中期望它的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48822958/

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