首页 > 解决方案 > 解析错误:Haskell

问题描述

我在下面收到解析错误,我不知道为什么。谢谢你的帮助!

   createObject :: [a] -> object a 
   createObject lst =
      let x = lst !! 0
      let y = lst !! 1
      let z = lst !! 2
      in object(x,y,z)

   test.hs:28:5: error: parse error on input `let'
   |
   28 |     let y = lst !! 1

标签: haskell

解决方案


let-inHaskell 中的表达式只使用一个let

createObject :: [a] -> object a 
createObject lst =
  let x = lst !! 0
      y = lst !! 1
      z = lst !! 2
  in object(x,y,z)

在一个do块中,您确实使用了多个let绑定,但我们不使用in表达式:

trivialExample :: [a] -> IO (Object a)
trivialExample lst = do 
  let x = lst !! 0 
  let y = lst !! 1 
  let z = lst !! 2
  return $ object (x,y,z)

推荐阅读