2017-03-24 4 views
0

haben einige Code zu vervollständigen. Aber ich weiß nicht, wie ich mit dem näselnden Ausdruck umgehen soll. Das ist der Code:Haskell lassen ..... in lassen Sie sich ... in

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

und ich brauche den Code auszuführen:

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

dw hat sein wie dw = Weizen [Tomate,Fleisch,Fleisch] (Mayo (Ketchup Keine))

dieses bekam:

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

aber wie kann ich baue es in den eingelassenen Ausdruck?

+1

Kann ich eine Hausaufgabenfrage wortwörtlich kopieren? –

+0

Hausaufgaben oder nicht (nun ja, es ist Hausaufgabe, aber trotzdem ...), es ist unklar, was Sie eigentlich erreichen wollen. – leftaroundabout

+1

Ich sehe auch nicht, warum Sie das mit 'Let'-Ausdrücken trotzdem konstruieren wollen. Was ist falsch an "dw = Weizen" (Mayo (Ketchup Keine)) "an erster Stelle? Es gibt keine Duplikate in der Konstruktion, so dass Sie auch keinen Speicher sparen können. –

Antwort

4

Sie können nur diese Ausdrücke in die let Ausdrücke einfügen:

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

oder einen einzelnen let Ausdruck verwenden:

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

Komplettes Beispiel:

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 

Ausgang:

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

Es klingt, als ob Sie einen Verweis auf grundlegende Haskell-Syntax konsultieren müssen.

Verwandte Themen