Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 如何制作列表构造函数以添加数据构造函数(帐户构造函数列表)_Haskell - Fatal编程技术网

Haskell 如何制作列表构造函数以添加数据构造函数(帐户构造函数列表)

Haskell 如何制作列表构造函数以添加数据构造函数(帐户构造函数列表),haskell,Haskell,我是haskell的新手,我正在尝试将帐户构造函数添加到列表中,然后根据帐户编号检查该列表,并对其进行某些修改。 我知道如何在没有列表的情况下实现这一点,但我不确定如何使用列表构造函数实现这一点。我使用的是一个简单的网络服务器,用户在其中输入帐号,我将其传输到方法 这是我的通话服务器。(l) 是“开放的1975”。其中,Open用于确定要使用的定义,1975是账号 talk :: Handle -> IO () talk h = loop where loop = do

我是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
talk::Handle->IO()
谈话h=循环
其中loop=do
我打开h-ws
(“传输”)->传输h-ws
以下是我的构造函数(我不是列表构造函数的用户)

数据账户=账户
{nameArian::String
,namePres::String
,accNum::TVar Int
,accValueA::TVar浮点
,accValueP::TVar Float
}
CreateCount nA nP acc valA valP cR=do

你的问题是什么?我创建列表的方式是否有用,或者应该使用标准列表将帐户添加到列表中?好的。对于“这是做事情的好方法吗?”这样的基于意见的问题,这不是一个合适的论坛。如果您的代码按您希望的方式运行,您可以尝试使用code review StackExchange,而这正是他们要查找的问题。您的问题是什么?我创建列表的方式是否有用,或者应该使用标准列表将帐户添加到其中?好的。对于“这是做事情的好方法吗?”这样的基于意见的问题,这不是一个合适的论坛。如果您的代码按您希望的方式运行,您可以尝试代码复查StackExchange,而这正是他们所寻找的问题。
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]