[Haskell-beginners] Shorten this code

Henk-Jan van Tuyl hjgtuyl at chello.nl
Fri Aug 2 00:18:14 CEST 2013


On Thu, 01 Aug 2013 17:09:11 +0200, Gesh hseG <gesh at gesh.uni.cx> wrote:

> On Wed, Jul 24, 2013 at 4:18 PM, Henk-Jan van Tuyl <hjgtuyl at chello.nl>  
> wrote:
>> d="12345"
>> f s = unwords $ map (\c -> let (Just x) = lookup c ((' ',"") :  
>> ('J',"24") :
>> zip (['A'..'I'] ++ ['K'..'Z']) [y : [x] | y <- d, x <- d]) in x) s
>> main = getLine >> (interact $ unlines . map f . lines)
>
> Note that you can point-freeify that solution a little and sacrifice  
> totality,
> yielding an even shorter solution. (I didn't remove the lambda  
> expression,
> as it ends up being shorter than flipping lookup)
> Inline the definitions and remove redundant spaces and newlines
> in the code below:
> d = "12345"
> f = unwords . map $
> \c -> fromJust $ lookup c ((' ',"") : ('J',"24") : zip
> (['A'..'Z']\\"J") [[y,x] | y <- d, x <- d])
> main = interact $ unlines . map f . drop 1 . lines

There are imports necessary for fromJust and \\, this makes it longer  
again.

Regards,
Henk-Jan van Tuyl


-- 
Folding at home
What if you could share your unused computer power to help find a cure? In  
just 5 minutes you can join the world's biggest networked computer and get  
us closer sooner. Watch the video.
http://folding.stanford.edu/


http://Van.Tuyl.eu/
http://members.chello.nl/hjgtuyl/tourdemonad.html
Haskell programming
--




More information about the Beginners mailing list