Haskell 哈斯克尔让。。。。。让。。。。。出租

Haskell 哈斯克尔让。。。。。让。。。。。出租,haskell,let,Haskell,Let,有一些代码要完成。但我不知道如何处理nasted let in表达式。这就是代码: 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 =

有一些代码要完成。但我不知道如何处理nasted let in表达式。这就是代码:

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 =
我需要完成以下代码:

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(番茄酱基恩))

得到这个:

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

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

您可以将这些表达式插入到
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语法的参考资料。

您可以将这些表达式插入
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语法。

我是否看到一个逐字复制的家庭作业问题?家庭作业与否(当然,这显然是家庭作业,但无论如何…),不清楚你到底想实现什么。我也不明白你为什么要用
let
表达式来构造这个问题。首先,
dw=Weizen[Tomate,Fleisch,Fleisch](Mayo(番茄酱基恩))
有什么问题?构造中没有重复项,因此也无法节省内存。我是否看到逐字复制的家庭作业问题?是否有家庭作业(很明显,这是家庭作业,但无论如何…),不清楚您实际想要实现什么。我也不明白您为什么要用
let
表达式构造此问题。首先,
dw=Weizen[Tomate,Fleisch,Fleisch](Mayo(番茄酱基恩))
有什么问题?构造中没有重复项,因此也无法节省内存。