具有可选返回值的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?是的,您是对的