我真的是Haskell的新人。对于主编码器来说,这也许是一个简单的问题。我想删除字符串外的引号。例如“ A1”到A1。
我尽力解决了这个问题。但这不起作用。我已经使用过read :: Read a => String-> a,id函数和正则表达式。
initialGuess :: ([Pitch],GameState)
initialGuess = (startGuess, GameState (chords))
where startGuess = ["A1", "B1", "C1"]
standard = [[n, o] | n <- ['A'..'G'], o <- ['1'..'3']] <br/>
chords = [[a,b,c] | a <- standard, b <- standard, c <-
standard, a /= b, b /= c, a /= c]
initialGuess的目的是不接受任何输入参数,并返回一对初始猜测值和一个游戏状态。运行此代码,我可以得到
[“ A1”,“ B1”,“ C1”],GameState [[“ A1”,“ A2”,“ A3”],[“ A1”,“ A2”,“ B1”],[“ A1 “,” A2“,” B2“],[” A1“,” A2“,” B3“],[” A1“,” A2“,” C1“] ............ .... [“ A1”,“ A2”,“ C2”],[“ A1”,“ A2”,“ C3”],[“ A1”,“ A2”,“ D1”],[“ A1” ,“ A2”,“ D2”],[“ A1”,“ A2”,“ D3”]]
但是,我想删除这些引号,例如
[A1,B1,C1],GameState [[A1,A2,A3],[A1,A2,B1],[A1,A2,B2],[A1,A2,B3],[A1,A2, C1] ............. [A1,A2,C2],[A1,A2,C3],[A1,A2,D1],[A1,A2,D2], [A1,A2,D3]]
答案 0 :(得分:1)
如果您只是想让状态更漂亮,则可以提供自己的显示功能:
-- |Display a list of strings without quotation marks
showLStr :: [String] -> String
showLStr p = "[" ++ intercalate "," p ++ "]"
intercalate
函数将","
放在字符串列表的每个元素之间。
showLStr ["A1", "A2", "A3"]
应显示为
[A1,A2,A3]
编辑:现在您可以使用showLStr
来显示游戏状态:
showGameState :: GameState -> String
showGameState (GameState chords) =
"GameState [" ++ (intercalate "," $ map showLStr chords) ++ "]"
-- |Make GameState "Show"-able
instance Show GameState where
show = showGameState
showGuess :: ([Pitch],GameState) -> String
showGuess (pitch, gameState) = showLStr pitch ++ ", " ++ show gameState