Benedict K.
Benedict K.

Reputation: 37

Haskell let ..... in let ..... in let

got some code to complete. But I don't know how to handle the nasted let in expression. Thats the code:

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

and I need to complete the code:

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

dw has to be like dw = Weizen [Tomate,Fleisch,Fleisch] (Mayo (Ketchup Keine))

got this:

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

but how can I build it into the let in expression?

Upvotes: 0

Views: 990

Answers (1)

Jon Purdy
Jon Purdy

Reputation: 54971

You can just insert those expressions into the let expressions:

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

Or use a single let expression:

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

Complete example:

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

Output:

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

It sounds like you need to consult a reference on basic Haskell syntax.

Upvotes: 5

Related Questions