向元组添加"值"

  • 本文关键字:添加 元组 haskell
  • 更新时间 :
  • 英文 :


我试图向玩家数据库中添加更多的"数据",但我得到了一些意想不到的结果:

数据类型声明:

data Player= Player teamName player goals
deriving (Show, Read)
type teamName = String
type player = String
type goals = [Int]
db :: [Players]
db = [
Player "Bayern" "Lewandowski" [3, 52, 16, 3],
Player "Tottenham" "Kane" [11, 31, 3, 2]
]

我用来向数据库中添加新玩家的代码。

addPlayer :: Player -> [Players] -> [Players]
addPlayer playerInfo database = database++[playerInfo]

用于显示给定数据库中的所有玩家:

showAllPlayers :: [Players] -> String
showAllPlayers [] =""
showAllPlayers [x] = getPlayer x
showAllPlayers (x:xs) = getPlayer x ++ "n" ++ showAllPlayers xs

当试图运行addPlayer(Player "Man UTD" "Rooney" [5, 6, 2, 11]) db)行时,一切都很好,在控制台中,它说这一行已经添加。输出:[Player "Bayern" "Lewandowski" [3, 52, 16, 3],Player "Tottenham" "Kane" [11, 31, 3, 2],Player "Man UTD" "Rooney" [5, 6, 2, 11]]

但是当我运行代码输出所有玩家putStrnLn(showAllPlayers data)时,我试图添加的玩家不在列表中?

addPlayers不修改其数据库参数;相反,它返回一个更新的数据库。因此,正确的调用是:

putStrLn (showAllPlayers (addPlayer (Player "Man UTD" "Rooney" [5, 6, 2, 11]) db))

最新更新