0
我新的Haskell和我使用LLVM-一般URE-3.5.1.0库:Haskell的图案匹配
https://hackage.haskell.org/package/llvm-general-pure-3.5.1.0/docs/
有一个基本块的数据类型,命名和名称数据类型:
data BasicBlock = BasicBlock Name [Named Instruction] (Named Terminator)
deriving (Eq, Read, Show, Typeable, Data)
data Named a
= Name := a
| Do a
data Name
= Name String --^a string name
| UnName Word --^a number for a nameless thing
我遇到的问题是模式匹配与命名指令。
我的代码如下所示:
executeInstruction :: Named Instruction -> Memory -> Memory
executeInstruction inst mem =
case inst of
Add nsw nuw op0 op1 meta -> undefined
这给了我,我期待一个错误消息,我的类型不匹配命名指令VS指令的。
所以我想剥离命名,只留下一条指令。
stripN :: Named Instruction -> Instruction
stripN (Name n inst) = inst
这给出了这样的错误:
构造'名称”应该有一个参数,但是已经给定2 在模式:名称为N研究所
我理解错误。但是我不明白如何从命名指令中得到一条指令。
感谢,
谢谢,固定它。 – user2297034
一个简单的问题是:什么是:=运算符? – user2297034
@ user2297034我其实不知道,我只是在你的问题中发现它:'data命名为a = Name:= a |做一个'。所以,':='是'Named'的构造函数之一。我想'命名指令'只是一个普通的insn('Do insn')或者一个带名称的标签('name:= insn')。我不知道这是如何在图书馆中使用的。 – chi