我是Haskell的新手。我从我的任务中得到了这个问题。它要求我做出此代码的工作:如何仅使用有效输入计算三角形的面积?
area_of_triangle :: Float
-> Float
-> Float
-> Maybe Float
我知道如何做到这一点没有Maybe
;它就像:
area_of_triangle :: Float -> Float -> Float -> Float
area_of_triangle a b c = sqrt(s*(s-a)*(s-b)*(s-c))
where
s = (a+b+c)/2
我猜的要求是,如果area_of_triangle=0.0
,返回Nothing
(因为这样的三角形不存在)。但我不知道如何写这个。
你可以使用一个'if'表达弄清楚,如果结果是'0',如果是,回'Nothing',否则返回'只是'。 –
这不完全正确!并非所有的'a'' b'和'c'都会产生一个有效的三角形。例如,'area_of_triangle 100000000 1 1'。 – hao
谢谢@会,休厄尔评论,我想通了,是这样的: area_of_triangle ::浮动 - >浮动 - >浮动 - >也许浮法 area_of_triangle ABC =如果area_answer/= 0.0 然后就area_answer 别的没什么 哪里 area_answer = sqrt(s *(sa)*(sb)*(sc)) 其中 s =(a + b + c)/ 2 如果我输入一个有效的“a” 'B','C'。但是,如果我为'a','b','c'输入无效的数字,则返回'Just NaN'。 现在我希望它可以返回'Just(Float)'或'Nothing',而不是'Just(Float)'或'Just NaN'。 –