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