目標是輸入一個浮點數并回傳一個字串,該字串僅包含點前數字的絕對值。
基本上輸入 -14.4 應該回傳“14”
當我通過 GHCI 輸入指令序列時,我沒有遇到任何問題。
然而,當我在這樣的編譯函式中使用它時:
testFront :: Float -> String
testFront x = tillDot $ show $ abs $ x
tillDot :: String -> String
tillDot x = case x of
[] -> ""
x -> takeWhile (/= '.') x
然后突然我遇到了螢屏截圖中顯示的錯誤。

我發現我必須使用 () 輸入負數。
問題是:我可以在檔案中以某種方式執行此操作嗎?自動將我的輸入放入()的東西?還是我必須撰寫一個單獨的函式來做到這一點?
uj5u.com熱心網友回復:
問題是:我可以在檔案中以某種方式執行此操作嗎?自動將我的輸入放入的東西
()?還是我必須撰寫一個單獨的函式來做到這一點?
您需要將它們包裝在括號中的原因是因為以下之間存在差異:
f - 14
和:
f (-14)
實際上,對于前者,它將14從名為 的變數的值中減去f。如果f是例如25,它將回傳11。
對于后者,它將呼叫一個作為引數f的函式-14。
除減號外,沒有運算子具有一元形式。因此,括號對于消除一元和二元形式之間的歧義是必要的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/528483.html
標籤:哈斯克尔
