

CodeEvalのReverseWordsが解けません。  
<https://www.codeeval.com/open_challenges/8/>

solve内でリストをreverseさせたいのですが、  
リスト内の要素を文字列を反復してしまいます。

こういったとき、どういう風に考えれば解けますでしょうか？

[code]

    import System.Environment (getArgs)
    
    solve :: [String] -> [String]
    solve ss = fmap reverse ss
    
    main = do
        contents <- getContents
        mapM_ putStrLn $ solve $ lines contents
    
[/code]


CC BY-SA 3.0
2015-03-01T11:11:32.530
7276
2015-03-01T12:31:13.757
8618
question
haskell
haskell で codeeval の問題が解けない


この場合、まずwhitespaceで区切って`["Hello", "World"]`のようなリストを作ってから反転させる、と考えるべきです。

`words`で

[code]

    > words "This is a pen"
    > ["This", "is", "a", "pen"]
    
[/code]

`unwords`で

[code]

    > unwords ["pen","a","is","This"]
    > "pen a is This"
    
[/code]

のような変換ができます。

以下に正しい`solve`を掲載します。（マウスオーバーで表示します。）

> `solve :: [String] -> [String]`  
>  `solve = fmap (unwords . reverse . words)`


CC BY-SA 3.0
2015-03-01T12:02:01.420
7277
2015-03-01T12:31:13.757
2015-03-01T12:31:13.757
2781
2781
7276
answer