On Mon, Jul 1, 2013 at 5:42 PM, TP <paratribulati...@free.fr> wrote: > So what is the difference between lift and [||]? > Although I feel stupid, I cannot lie and claim I have understood.
Hi TP, Sometimes [| |] does need to call lift. If for some reason the original lift wasn't exported, you could define: myLift x = [| x |] But if you have enough $( ) splices to balance out the [| |], there is no lift involved: myId1 x = $( [| x |] ) myId2 x = [| $(x) |] I think your first example is supposed to do: *Pr> let x = 5 in $(pr 'x) x = 5 That's possible if you had defined pr as: pr n = [| putStrLn $ $(lift (nameBase n)) ++ " = " ++ show $(varE n) |] If there were no [| |] quotes, but still the ' syntax for getting a Name, it would still be possible to define pr: pr2 n = varE 'putStrLn `appE` (infixE (Just (lift (nameBase n))) (varE '(++)) (Just (infixE (Just (lift " = ")) (varE '(++)) (Just (appE (varE 'show) (varE n)))))) -- Adam _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe