我是 Haskell 和一般代碼的新手,在嘗試撰寫一個腳本來顯示兩個數字中的哪一個更小以使用守衛進行練習時,我遇到了“輸入'|'上的決議錯誤”錯誤。我讀到了關于以某種方式使用“讓”的資訊,但我無法弄清楚。我如何克服這個錯誤?
smallest a b = | a >= b = b
| a <= b = a
uj5u.com熱心網友回復:
我發布這個答案是為了澄清你確實需要等號;但是每種情況都需要一個,而實際上是復制了它:
-- --- this is the equal sign (one per case)
-- |
-- ----------|--- which you are duplicating here
-- | |
-- v v
smallest a b = | a >= b = b
| a <= b = a
這就是建議的代碼有效的原因。
順便說一句,縮進很重要,但你可以把這段代碼寫成 2 行而不是 3 行,
smallest a b | a >= b = b
| otherwise = a
盡管它不會提高可讀性,并且如果第一個部分之前的部分|很長,實際上會降低它的可讀性。
順便說一下,據我所知,otherwise它確實只是True(嗯,前者是一個函式,而后者是一個值建構式,但我想這沒什么區別,因為前者就像一個 0 引數函式生成后者,因此它們基本上是同義詞)。
uj5u.com熱心網友回復:
使用守衛時,您不需要等號。你可以簡單地這樣做:
smallest a b
| a >= b = b
| otherwise = a
注意這里的縮進。此外,由于您的第一個條件同時處理大于和等于的情況,您可以簡單地使用“否則”而不是明確說明剩余的情況。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/490528.html
標籤:哈斯克尔
