如何使列表构造函数添加数据构造函数(帐户构造函数列表)

时间:2019-04-03 16:48:46

标签: haskell

对于Haskell来说,我还很陌生,我正在尝试将帐户构造函数添加到列表中,然后根据帐号检查该列表并对其进行某些修改。 我知道如何在没有列表的情况下执行此操作,但是我不确定如何使用列表构造函数来执行此操作。我使用的是网络简单服务器,用户在其中输入帐号,然后将其转移到方法中。

这是我的谈话服务器。 (l)是“ 1975年公开赛”。在这里,“ Open”确定要使用的定义,“ 1975”是帐号。

talk :: Handle -> IO ()
 talk h = loop
  where loop = do
          l <- hGetLine h
          hPutStrLn h "Reply"
          let ws = words l
          case (head ws) of ("Open") -> open h ws
                            ("Tranfer") -> transfer h ws

这是我的构造函数(我不是列表构造函数的用户)

data Account = Account
  { nameArian :: String
  , namePres :: String
  , accNum :: TVar Int
  , accValueA :: TVar Float
  , accValueP :: TVar Float
  }

createAccount nA nP acc valA valP cR = do
  valA' <- newTVar valA
  valP' <- newTVar valP
  return $ Account nA nP acc valA' valP'

data Lista = Lista { list :: TVar [Account]}

createList a = do
  a' <- newTVar a
  return $ Lista a'

此定义将开设一个帐户并将其添加到列表中

open :: Handle -> [String] -> IO ()
open h ws = do
  let num = read (unwords (tail ws)) :: Int
  accounts <- atomically . sequence $
    zipWith3 createAccount ["Arian"] ["Pres"] [x] [0.0] [0.0] [0]
  let accVar = accounts
  accls <- atomically . sequence $
    zipWith createList [accounts]

对不起,如果有点杂乱。

0 个答案:

没有答案