On Friday, 11. June 2010 00:12:03 Daniel Fischer wrote:

Thanks Daniel. 

> Upgrade. We're at 6.12 now!

Did that. Everything is available now.

I am still having trouble with the test function. First it seems I need 
braces, so I can mix == and <*>.
test :: Num a
     => (a -> a) -> (a -> a) -> (a -> a) -> [String]
test f g h = do
    [f', g', h'] <- permutations [Named "f" f, Named "g" g, Named "h" h]
    guard $ namedPure 42 == (f' <*> g' <*> h' <*> namedPure 42)
    return $ show f' ++ " . " ++ show g' ++ " . " ++ show h'

But this leads to

    Occurs check: cannot construct the infinite type:
      a = (a -> a) -> a1 -> t
    When generalising the type(s) for `test'

This error message is still the maximum penalty for me (along with "Corba 
marshall exception" in J2EE and "Missing right parenthesis" in Oracle SQL)

Then generally speaking, I have the feeling that this code does not 
allow "namifying" existing code either. In this respect it does not seem to 
do better than the "apply" method pattern discussed earlier in this thread.

The problem it solves is very simple and therefore using (<*>) and namedPure 
isn't much of a drawback. But if I had tons of code to namify I would still 
have to do significant changes to it, right?





-- 
Martin
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to