我正在处理一个类的Haskell问题,我似乎无法获得将某个项目拉出自定义类型的语法。这里的类型:Haskell - 从自定义类型返回项目
-- Finite State Machine M = (Q, q0, F, d)
type FSM = ([Int], Int, [Int], [(Int,Char,Int)])
而这里的测试值,我一直在与:
testFSM :: FSM
testFSM = ([ 1, 2, 3 ], 1, [ 3 ], [ (1, 'a', 2), (2, 'b', 3), (1, 'b', 1) ])
我希望能拉出每件从FSM类型的数据,但我我不太确定我会怎么做。我曾经尝试这样做:
fsmGetQ fsm = [ q | (q, q0, f, d) <- fsm ]
,但如果我运行的功能与testFSM我得到:
<interactive>:102:9:
Couldn't match type `([Int], Int, [Int], [(Int, Char, Int)])'
with `[(t0, t10, t20, t30)]'
Expected type: [(t0, t10, t20, t30)]
Actual type: FSM
In the first argument of `fsmGetQ', namely `testFSM'
In the expression: fsmGetQ testFSM
In an equation for `it': it = fsmGetQ testFSM
我已经得到了很多的用于各个元素的工作辅助功能,但我可以”弄清楚如何从FSM类型中提取它们。
这做到了。非常感谢你。 –