具有可选返回值的Haskell函数
我创建了类型具有可选返回值的Haskell函数,haskell,Haskell,我创建了类型Transition,它是一个元组,类似(intq1,chars,intq2)和类型T,它是Transitions的数组。我需要一个函数,它将返回与我们的q1和s匹配的q2,如果我们没有这样的转换,它将返回-1。我编写了一个函数delta,但问题是它返回list type Transition q = (q, Char, q) type T q = [Transition q] delta :: (Eq a) => FSM a -> Char -> a ->
Transition
,它是一个元组,类似(intq1,chars,intq2)
和类型T
,它是Transition
s的数组。我需要一个函数,它将返回与我们的q1
和s
匹配的q2
,如果我们没有这样的转换,它将返回-1
。我编写了一个函数delta
,但问题是它返回list
type Transition q = (q, Char, q)
type T q = [Transition q]
delta :: (Eq a) => FSM a -> Char -> a -> [a]
delta m symbol st = [q1 | (q0, x, q1) <- trans m, q0 == st, x == symbol ]
类型转换q=(q,Char,q)
类型tq=[转换q]
增量::(等式a)=>FSM a->Char->a->[a]
delta m symbol st=[q1 |(q0,x,q1)您可以使用该类型。您必须将类型签名更改为:
delta :: (Eq a) => FSM a -> Char -> a -> Maybe[a]
然后,如果有结果,您必须返回仅返回q2
,否则返回无任何结果。因此,您要问的是如何从列表中获取第一项,如果列表为空,则返回-1?是的,您是对的