2016-05-04 44 views
0

我是Haskell的初學者。我試圖將一個字符串添加到列表中,並且此字符串應包含"TRUE""FALSE",具體取決於條件。我們如何將布爾轉換爲Haskell中的字符串

type Output = [String] 
type T = Bool 

f :: T -> [String] 

,我想在這裏使用printf,但我不知道布爾類型的符號(如%d對於int)。有沒有什麼好的方法來做到這一點?謝謝!

+0

這是很清楚,如果你只是想布爾轉換爲字符串(如標題所示),或者對'printf'或字符串列表有問題。請澄清你的問題。 – stholzm

回答

3

您可以編寫一個函數,它把一個單一Bool成一個單一的String

boolToString :: T -> String 
boolToString True = "TRUE" 
boolToString False = "FALSE" 

,但它不是從你的問題的[String]的其他部分應該是什麼明確的。

+0

這是一個存儲輸出的列表。感謝你的回答! – newinHaskell

4

如果表達式如何?

if condition then "TRUE" else "FALSE" 

另外,如果你不關心上的情況下,你可能只是一個布爾使用show

0

您可以定義基於被用於Bool定義show函數的函數:

import Data.Char(toUpper) 

showBool :: Bool -> String 
showBool = map toUpper . show 

由於show回報TrueFalse,通過使用map toUpper功能,你把全部大寫。

1

您不能將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"] 
+0

您的回答有點誤導您:使用'T'而不是'String',函數的名稱應該是'toString',而不是'toBool'。你能解決這個問題嗎? –

+0

我修正了名字,我弄錯了,但是T由用戶定義(類型T = Bool) – Ash

+0

您可以將'Bool'轉換爲'String'列表。不僅如此,還有無數種方法可以將'Bool'轉換爲'String'列表(即使我們只計算只包含字符串「TRUE」和「FALSE」的列表) )! –

相關問題