我在 Haskell 中有以下代码,它是 Brainfuck 解释器的一部分(当我学习一门新语言时,我最喜欢的第一个中型项目):
type Program = String
type Pointer = Int
type Stack = [Int]
data ExecutionState = ExecutionState {
programPointer :: Pointer,
program :: Program,
stackPointer :: Pointer,
stack :: Stack
} deriving (Eq, Show)
moveBackwards :: ExecutionState -> ExecutionState
moveBackwards (ExecutionState pp p sp s) = ExecutionState (pp-1) p sp s
curr :: ExecutionState -> Char
curr execState = (stack execState) !! (stackPointer execState)
currByte :: ExecutionState -> Int
currByte execState = (program execState) !! (programPointer …Run Code Online (Sandbox Code Playgroud) haskell ×1