2017-03-24 3 views
0

いくつかのコードを完成させました。しかし、私は無駄な表現をどのように処理するのか分かりません。ハスケルは.....でレット.....してみましょう

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

と私は、コードを完了する必要があります:コードのthats

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

が、どのようにすることができます:

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

dwdw = Weizen [Tomate,Fleisch,Fleisch] (Mayo (Ketchup Keine))

はこれを得たようである必要がありますそれを表現の中に組み込みますか?

+1

宿題に関する質問はそのままコピーされていますか? –

+0

宿題かどうか(これは宿題ですが、とにかく...)、あなたが実際に達成しようとしていることは不明です。 – leftaroundabout

+1

とにかく 'let'式でこれを組み立てたい理由もわかりません。最初は 'dw = Weizen [Tomate、Fleisch、Fleisch](Mayo(Ketchup Keine))の何が間違っていますか?構造に重複はありませんので、メモリに保存することもできません。 –

答えて

4

あなただけの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の構文のリファレンスを参照する必要があるようです。

関連する問題