Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell可能是类型构造函数_Haskell - Fatal编程技术网

Haskell可能是类型构造函数

Haskell可能是类型构造函数,haskell,Haskell,我试图在将一个整数传递到函数中,并得到一个可能是一个类型的上下文中,对可能是类型构造函数进行一个非常简单的实现 我所看到的具体情况是一个函数,它接受一个整数并返回该数字是否在某个范围内 data Maybe Number = Nothing | Just FirstRange | Just SecondRange | Just ThirdRange | Just FourthRange | Just FifthRange deriving(Show) checknum :: Integer

我试图在将一个整数传递到函数中,并得到一个
可能是一个
类型的上下文中,对
可能是
类型构造函数进行一个非常简单的实现

我所看到的具体情况是一个函数,它接受一个整数并返回该数字是否在某个范围内

data Maybe Number = Nothing | Just FirstRange | Just SecondRange | Just ThirdRange | Just FourthRange | Just FifthRange
   deriving(Show)
checknum :: Integer -> Maybe Number
checknum numinput
    |numinput >=0 && < 50 = Just FirstRange
    |numinput >=50 && < 60 = Just SecondRange
    |numinput >=60 && < 70 = Just ThirdRange
    |numinput >=70 && < 80 = Just FourthRange
    |numinput >=80 && < 100 = Just FifthRange
    |numinput < 0 || numinput > 100 = Nothing

无需定义
可能
,只需定义您的
编号
类型,然后在
可能
中替换“a”:

data Number = FirstRange | SecondRange | ThirdRange | FourthRange | FifthRange

此外,您还缺少一些
numinput无需定义
可能
,只需定义您的
编号
类型,然后用该类型替换
可能a中的“a”:

data Number = FirstRange | SecondRange | ThirdRange | FourthRange | FifthRange

此外,您还缺少一些
numinput为什么不需要使用Maybe显式地键入construct?@jamesmartini
Maybe
是一个参数化类型,因此它需要一个现有类型来为您提供一个类型。这意味着,如果您在这个答案中定义了
Number
类型,您可以对其应用
Maybe
以获得
Maybe Number
。您可以将它与任何现有类型一起使用,它将起作用。@jamesmartini
可能
已经由标准库定义,因为
数据可能a=Nothing |只是a
——您不必重新定义它。如果将
a
替换为
Number
(即,如果使用
Maybe Number
),您将得到所需的内容。为什么不需要使用Maybe显式键入construct?@jamesmartini
Maybe
是一个参数化类型,因此它需要一个现有类型来为您提供一个类型。这意味着,如果您在这个答案中定义了
Number
类型,您可以对其应用
Maybe
以获得
Maybe Number
。您可以将它与任何现有类型一起使用,它将起作用。@jamesmartini
可能
已经由标准库定义,因为
数据可能a=Nothing |只是a
——您不必重新定义它。如果将
a
替换为
Number
(即,如果您使用
可能是Number
),您将得到您所需要的。无关:如果您想确保涵盖所有可能的情况,请使用“否则=无”作为最后的防护措施。相反,使用手工制作的保护来补充之前的所有保护更容易出错。无关:如果您想确保涵盖所有可能的情况,请使用“否则=无”作为最后一个保护。相反,使用一个手工制作的保护来补充之前的所有保护更容易出错。