2016-05-04 11 views
0

私はHaskellの初心者です。私はリストに文字列を追加しようとしていましたが、この文字列には条件によっては"TRUE"または"FALSE"が含まれています。Haskellでbooleanをstringに変換するには

type Output = [String] 
type T = Bool 

f :: T -> [String] 

私はここprintfを使用しようとしていたが、私は(int型用%dなど)bool型のシンボルを知りません。これを行う良い方法はありますか?ありがとう!

+0

をそれは非常に明確ではない:あなたは本当に結果が[String]あなただけ行うことができますしたい場合は

toString :: T -> String {- T = Bool (It was a type defined by him-} toString x = if x then "True" else "False" 

あなたのような何かをする必要があります(タイトルが示唆するように)、あるいは 'printf'や文字列のリストに問題があります。あなたの質問を明確にしてください。 – stholzm

答えて

3

あなたは、単一のStringに単一Boolをオン機能書き込むことができます。

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

を、それは[String]の他の部分がどうあるべきか、あなたの質問から明らかではありません。

+0

出力を保存するためのリストです。答えをありがとう! – newinHaskell

4

plain if式はどうですか?

if condition then "TRUE" else "FALSE" 

あなたが大文字を気にしない場合は別の方法として、あなただけのブールにshowを使用することができます。

0

あなたはBoolのために定義されてshow機能に基づく関数を定義することができますshow戻りTrueまたはFalse以来

import Data.Char(toUpper) 

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

を、map toUpper機能を使用することにより、あなたはすべて大文字で入れました。

1

[String]に変更することはできません。ちょうどStringになります。あなただけのStringにブール値を変換したい場合は

toString :: T -> [String] 
toString x = if x then ["True"] else ["False"] 
+0

あなたの答えはちょっと誤解されます。あなたは 'String'の代わりに' T'を使います。関数の名前は 'toBool'ではなく' toString'のようなものでなければなりません。これを修正していただけますか? –

+0

私は名前を修正しましたが、間違っていますが、Tはユーザによって定義されました(タイプT = Bool) – Ash

+0

'Bool'を' String'のリストにすることができます。それだけでなく、 'Bool'を' String'のリストにする方法は無限です(文字列 'TRUE'と' FALSE'だけからなるリストを数えたとしても) )! –

関連する問題