2017-04-24 6 views
0

私はIntのリストでsquareのような演算を使用して、その後に初期値と結果を文字列で出力しようとしています。例:5 = 25 6 = 36 = 7 = 49のHaskell IntList to String

私の推測では、宣言は、この

IntListToString :: (Int -> Int) -> [Int] -> String 
に見えるように持っているように、正方形IntListToString

[5,6,7]は、何かをもたらすべきです

私は関数自体に苦労しています。 map-functionを使用し、後で適切なフォーマットに変換する必要がありますか?

これを解決するための提案は何ですか?

+1

'f g = unwords。 map(\ x-> show x ++ "=" ++ show(g x)) 'が動作するはずです。 f(^ 2)[5,6,7]の場合、結果は「5 = 25 6 = 36 7 = 49」となります。 – Antisthenes

答えて

0

はい、beforeAfterはあなたのIntListToStringの実装です

showBeforeAfter before after = show before ++ "=" ++ show after 
transformBeforeAfter f x = showBeforeAfter x (f x) 
mapBeforeAfter f = map (transformBeforeAfter f) 
beforeAfter f xs = unwords (mapBeforeAfter f xs) 

を試してみてください。関数名は、記号(コロンを除く)または小文字で始まらなければならないことに注意してください。

+0

答えをありがとう。それは完全に動作します。各結果の後に新しい行を実装する簡単な方法はありますか? – toasttoast

+0

はい。 unwordsの代わりにunlinesを使用します。 –