小编tom*_*lak的帖子

'do' 块内的守卫 - haskell

我想写一个简单的游戏“猜数字” -n尝试。我想添加一些条件和命中。是否可以在block内使用守卫do

这是我的代码:

game = return()
game n = do putStrLn "guess number: 0-99"
            number<-getLine
            let y = read number
            let x =20
            | y>x = putStrLn "your number is greater than x"
            | y<x = putStrLn "your number is less than x"
            | y==x  putStrLn "U win!!"
            | otherwise = game (n-1)
Run Code Online (Sandbox Code Playgroud)

已经出错

error: parse error on input ‘|’
Run Code Online (Sandbox Code Playgroud)

它可以用一些空白来修复,还是不可能做到?

syntax haskell guard-clause do-notation

6
推荐指数
2
解决办法
1829
查看次数

检查树是否是另一棵树的子树

我试图检查树是否是另一棵树的子树。这是我的树数据:

data Tree a = Empty | Node a (Tree a)(Tree a) deriving Show

tree1 :: Tree Int
tree1 = Node 1
        (Node 2
          (Node 4 Empty Empty)
          (Node 5 Empty
              (Node 8 Empty Empty))
        )
        (Node 3
          (Node 6 Empty
           (Node 9 Empty Empty))
           (Node 7 Empty Empty)
          )

tree2 :: Tree Int
tree2 = Node 2
        (Node 4 Empty Empty)
        (Node 5 Empty
            (Node 8 Empty Empty))
Run Code Online (Sandbox Code Playgroud)

最后定义未实现的功能:

isSubTree :: Eq a => Tree a -> Tree a …
Run Code Online (Sandbox Code Playgroud)

haskell

3
推荐指数
1
解决办法
167
查看次数

标签 统计

haskell ×2

do-notation ×1

guard-clause ×1

syntax ×1