[Haskell-cafe] Very crazy

Tristan Allwood tora at zonetora.co.uk
Tue Sep 25 06:19:47 EDT 2007


On Tue, Sep 25, 2007 at 10:53:55AM +0100, Andrew Coppin wrote:
> Tristan Allwood wrote:
>>
>> Just to follow those sentiments, the version I knocked out quickly
>> looked like:
>> (It's not quite the same as the original function, I think I'm lacking a
>> map (map (take 8)) on the first line).
>>
>> showSystems :: Show a => [[a]] -> String
>> showSystems = unlines . zipWith showSystem [1..]   
>>   where
>>     showSystem n as = "Eq" ++ (show n) ++ ": " ++ sum ++ " = " ++ val
>>       where
>>         sum = concat . intersperse " + " . zipWith showNum [1..] $ (init 
>> as)
>>         val = show . last $ as
>>         showNum n a = show a ++ " x" ++ show n
>>
>>   
>
> I'm puzzled - do we have 2 seperate where clauses?

Yes there are 2 and no they arn't seperate.  The second where clause is
nested and is a set of definitioins local to showSystem, and as such can
use the bound values of n and as. (But it can also "see" any values
bound by showSystems and its where clause (which in this case is just
the definition of showSystem).

Clear as mud?

T
-- 
Tristan Allwood
PhD Student
Department of Computing
Imperial College London


More information about the Haskell-Cafe mailing list