0

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?

Willem Van Onsem
  • 443,496
  • 30
  • 428
  • 555
  • 1
    Do I see a homework question copied verbatim? – Willem Van Onsem Mar 24 '17 at 20:04
  • Homework or not (well, it _evidently_ is homework, but anyway...), it's unclear what you're actually trying to achieve. – leftaroundabout Mar 24 '17 at 20:07
  • 1
    I also don't see why you want to construct this with `let` expressions anyway. What is wrong with `dw = Weizen [Tomate,Fleisch,Fleisch] (Mayo (Ketchup Keine))` in the first place? There are no duplicates in the construction, so you cannot save on memory either. – Willem Van Onsem Mar 24 '17 at 20:13

1 Answers1

5

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.

Jon Purdy
  • 53,300
  • 8
  • 96
  • 166