我是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'。 –