我是Haskell的初學者。我試圖將一個字符串添加到列表中,並且此字符串應包含"TRUE"
或"FALSE"
,具體取決於條件。我們如何將布爾轉換爲Haskell中的字符串
type Output = [String]
type T = Bool
f :: T -> [String]
,我想在這裏使用printf
,但我不知道布爾類型的符號(如%d
對於int)。有沒有什麼好的方法來做到這一點?謝謝!
我是Haskell的初學者。我試圖將一個字符串添加到列表中,並且此字符串應包含"TRUE"
或"FALSE"
,具體取決於條件。我們如何將布爾轉換爲Haskell中的字符串
type Output = [String]
type T = Bool
f :: T -> [String]
,我想在這裏使用printf
,但我不知道布爾類型的符號(如%d
對於int)。有沒有什麼好的方法來做到這一點?謝謝!
您可以編寫一個函數,它把一個單一Bool
成一個單一的String
:
boolToString :: T -> String
boolToString True = "TRUE"
boolToString False = "FALSE"
,但它不是從你的問題的[String]
的其他部分應該是什麼明確的。
這是一個存儲輸出的列表。感謝你的回答! – newinHaskell
如果表達式如何?
if condition then "TRUE" else "FALSE"
另外,如果你不關心上的情況下,你可能只是一個布爾使用show
。
您可以定義基於被用於Bool
定義show
函數的函數:
import Data.Char(toUpper)
showBool :: Bool -> String
showBool = map toUpper . show
由於show
回報True
或False
,通過使用map toUpper
功能,你把全部大寫。
您不能將Bool
變成[String]
,只是變成String
。
你應該這樣做:
toString :: T -> String {- T = Bool (It was a type defined by him-}
toString x = if x then "True" else "False"
如果你真的想要得到的結果是[String]
,你可以這樣做:
toString :: T -> [String]
toString x = if x then ["True"] else ["False"]
您的回答有點誤導您:使用'T'而不是'String',函數的名稱應該是'toString',而不是'toBool'。你能解決這個問題嗎? –
我修正了名字,我弄錯了,但是T由用戶定義(類型T = Bool) – Ash
您可以將'Bool'轉換爲'String'列表。不僅如此,還有無數種方法可以將'Bool'轉換爲'String'列表(即使我們只計算只包含字符串「TRUE」和「FALSE」的列表) )! –
這是很清楚,如果你只是想布爾轉換爲字符串(如標題所示),或者對'printf'或字符串列表有問題。請澄清你的問題。 – stholzm