Haskell让......让......让

时间:2017-03-24 20:01:25

标签: haskell let

得到一些代码来完成。但我不知道如何处理这个禁止的表达。那是代码:

data Zutat = Tomate | Fleisch | Salat
data Bun = Weizen | Roggen
data Sosse = Ketchup Sosse | Mayo Sosse | Keine
data Burger = Burger Bun [Zutat] Sosse

我需要完成代码:

let zt =               in -- Zutat
  let so =               in -- Sosse
    let dw =

dw必须与dw = Weizen [Tomate,Fleisch,Fleisch] (Mayo (Ketchup Keine))

类似

得到了这个:

zt = [Tomate,Fleisch,Fleisch]
so = Mayo (Ketchup Keine)
dw = Burger Weizen zt so

但我如何将其构建到let in表达式中?

1 个答案:

答案 0 :(得分:5)

您只需将这些表达式插入let表达式:

即可
let zt = [Tomate, Fleisch, Fleisch] in
  let so = Mayo (Ketchup Keine) in
    let dw = Burger Weizen zt so in
      ...

或使用单个let表达式:

let
  zt = [Tomate, Fleisch, Fleisch]
  so = Mayo (Ketchup Keine)
  dw = Burger Weizen zt so
in ...

完整示例:

data Zutat = Tomate | Fleisch | Salat
  deriving (Show)

data Bun = Weizen | Roggen
  deriving (Show)

data Sosse = Ketchup Sosse | Mayo Sosse | Keine
  deriving (Show)

data Burger = Burger Bun [Zutat] Sosse
  deriving (Show)

main :: IO ()
main = let
  zt = [Tomate, Fleisch, Fleisch]
  so = Mayo (Ketchup Keine)
  dw = Burger Weizen zt so
  in print dw

输出:

Burger Weizen [Tomate,Fleisch,Fleisch] (Mayo (Ketchup Keine))

听起来您需要查阅有关基本Haskell语法的参考资料。