[Haskell-cafe] Re: DDC compiler and effects; better than Haskell?
Sittampalam, Ganesh
ganesh.sittampalam at credit-suisse.com
Thu Aug 13 10:15:14 EDT 2009
What would preOrder foldr/foldl mean? What about preOrder (reverse . map) and preOrder (map . reverse) ?
Another option would be for map to take a "strategy" as a parameter, sort of like Control.Parallel.Strategies.
Peter Verswyvelen wrote:
> Well, in DDC I believe the order is left to right.
>
> But you guys are right, many orders exist.
>
> On the other hand, a language might offer primitives to convert
> pure-to-effectfull functions no, in which you indicate the order you
> want.
>
> e.g. preOrder map
>
> No?
>
> (anyway Oleg's reply seems to give a definite answer to this thread
> no? :-)
>
> On Thu, Aug 13, 2009 at 11:06 AM, Heinrich
> Apfelmus<apfelmus at quantentunnel.de> wrote:
>> Russell O'Connor wrote:
>>> Peter Verswyvelen wrote:
>>>
>>>> I kind of agree with the DDC authors here; in Haskell as soon as a
>>>> function has a side effect, and you want to pass that function to a
>>>> pure higher order function, you're stuck, you need to pick the
>>>> monadic version of the higher order function, if it exists. So
>>>> Haskell doesn't really solve the modularity problem, you need two
>>>> versions of each higher order function really,
>>>
>>> Actually you need five versions: The pure version, the pre-order
>>> traversal, the post-order traversal, the in-order traversal, and the
>>> reverse in-order traversal. And that is just looking at syntax. If
>>> you care about your semantics you could potentially have more (or
>>> less).
>>
>> Exactly! There is no unique choice for the order of effects when
>> lifting a pure function to an effectful one.
>>
>> For instance, here two different versions of an effectful map :
>>
>> mapM f [] = return []
>> mapM f (x:xs) = do
>> y <- f x
>> ys <- mapM f xs
>> return (y:ys)
>>
>> mapM2 f [] = return []
>> mapM2 f (x:xs) = do
>> ys <- mapM2 f xs
>> y <- f x
>> return (y:ys)
>>
>> Which one will the DCC compiler chose, given
>>
>> map f [] = []
>> map f (x:xs) = f x : map f xs
>>
>> ? Whenever I write a pure higher order function, I'd also have to
>> document the order of effects.
>>
>>
>> Regards,
>> apfelmus
>>
>> --
>> http://apfelmus.nfshost.com
>>
>> _______________________________________________
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
===============================================================================
Please access the attached hyperlink for an important electronic communications disclaimer:
http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html
===============================================================================
More information about the Haskell-Cafe
mailing list