CS代写 考虑一个运送水果箱的仓库。每个盒子只包含一种水果,例如一盒6个苹果或一盒3个香蕉,但不包含混合物。Haskell数据类型用于表示水果和水果盒,如下所示

考虑一个运送水果箱的仓库。每个盒子只包含一种水果,例如一盒6个苹果或一盒3个香蕉,但不包含混合物。Haskell数据类型用于表示水果和水果盒,如下所示:
 
data Fruit = Banana | Apple | Orange | Lychee deriving (Show, Eq)
type FruitBox = (Fruit, Int)

Copyright By PowCoder代写 加微信 powcoder

例如,tuple(Lychee,8)用来表示一盒8个荔枝。
 
问题1使用这些数据类型表示一个包含6个橙子的盒子,并将其指定给变量名x1。包括x1的类型声明。
 
问题2创建一个list,按此顺序表示5个水果盒的序列:4个香蕉、3个苹果、5个苹果、1个香蕉和3个橙子。将此列表分配给变量名xs1。
包括xs1的类型声明。
 
问题3编写一个function, f1,它接受一个水果盒,检查它是否是一个包含5个或更多苹果的盒子,如果是,则返回True,否则返回False。包括的类型声明f1。
 
问题4使用list comprehension编写一个函数fruitSum,用于计算水果盒列表中给定的单一水果类型的水果总数。例如
 fruitSum Apple [(Banana, 6), (Apple, 3), (Lychee, 4), (Apple, 2)]
将返回值5(即3+2个苹果)。包括水果总数的类型声明。
假设我们希望实现一个decision tree。当应用于某个对象时,决策树将应用一系列条件,并根据结果返回真或假。例如,考虑应用于水果箱的决策树,如图1所示。

因此,例如,当应用此决策树时,一盒4个香蕉将返回false,而一盒3个苹果将返回true。
以下数据定义为任何通用类型的对象定义了此类决策树:
 
data DTree a = Leaf Bool | Node (a->Bool) (DTree a) (DTree a)
 
下面是图1所示决策树的一个实现:
d1 :: DTree FruitBox
d1 = Node (\(f,_)-> f==Apple)
(Node (\(_,n)-> n>3) (Leaf False) (Leaf True))
(Leaf False)

 问题5。一个布尔决策树将返回一个应用于递归的布尔值。例如
 applyDTree d1 (Banana,4) return False
applyDTree d1 (Apple,3) return True
你的函数需要是多态的(polymorphic),也就是说,它可以用于任何类型的a。包括ApplyTree的类型声明。
 
问题6。编写代码将决策树d1应用到x1,并将布尔值输出到变量b1。
 
问题7。编写一个函数mapApplyDTree,将ApplyTree映射到对象列表,并将对象的决策作为列表返回。例如:
mapApplyDTree d1 xs1
将返回一个包含5个布尔值的列表list(基于Q2中的xs1)。在一行代码中编写此函数的主体,开头为:
mapApplyDTree d=…
      提示:使用currying和map函数。
问题8。使用DTree data type数据类型为水果盒构建新的决策树d2

如果一个整数序列中的数之间的差是常数,那么这个整数序列就是一个等差数列。例如,2,5,8,11,14是等差数列(差值为3),而2,5,9,12,15不是等差数列(差值为3或4)。

问题9。编写一个函数isArithmeticProgression 该函数以整数列表作为参数,以[Int]类型给出,当且仅当它是算术级数时返回True。包括它的类型声明。
 
请注意,2个或更少整数的序列被视为算术级数。arithmetic progressions.
提示:您可能需要使用辅助函数来编写此函数。
 
问题10。使用DTree在表示图3所示的决策树的整数列表上构造决策树d3。 
提示:applyDTree d3 [2,5,8,11,14]应该返回True。

问题11。使用DTree构建决策树d4,该决策树将通用决策树作为参数,当且仅当决策树中的所有叶节点都具有该值时,才会返回True
符合事实的包括d4的类型声明。
提示:使用辅助函数确定决策树中的所有叶节点是否为真。
 
问题12。将d4应用于自身,并将结果返回给变量名b4。

程序代写 CS代考 加微信: powcoder QQ: 1823890830 Email: powcoder@163.com