[Haskell-beginners] About scope range: outside of the do-block

Roel van Dijk vandijk.roel at gmail.com
Sun Apr 20 13:09:42 UTC 2014


On 20 April 2014 14:57, S. H. Aegis <shaegis at gmail.com> wrote:
>
>  Is there any other ways to use variables outside of the "do-block"?
>

You can pass the list of names as an argument where it is needed.


> import Data.List
> import Data.List.Split
> import Data.Char
> import Data.Maybe
>
> main :: IO ()
> main = do
>     names <- readFile "names.txt"
>     print $ sum $ map (\x -> getPosition names x * getScore x) names
>
> getPosition :: [String] -> String -> Int
> getPosition names x = fromMaybe 0 (elemIndex x $ sortedNamesList names) + 1
>
> getScore :: String -> Int
> getScore xs = sum $ map (\x -> ord x - 64) xs
>
> sortedNamesList :: [String] -> [String]
> sortedNamesList names = sort $ nameList names
>
> nameList :: String -> [String]
> nameList = split (dropDelims . dropBlanks $ oneOf ",\"")
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20140420/63492b5e/attachment.html>


More information about the Beginners mailing list