[Haskell-cafe] nested function application question
David Menendez
dave at zednenem.com
Mon Jan 5 15:33:02 EST 2009
On Mon, Jan 5, 2009 at 3:16 PM, Brandon S. Allbery KF8NH
<allbery at ece.cmu.edu> wrote:
> On 2009 Jan 5, at 13:57, David Menendez wrote:
>>
>> 2009/1/5 Ross Mellgren <rmm-haskell at z.odi.ac>:
>>>
>>> If for some reason you absolutely need to avoid parentheses (mostly as a
>>> thought exercise, I guess), you'd have to have a flipped version of
>>> intercalate:
>>
>> Or a version of ($) that associates differently.
>>
>> infixl 0 $$
>>
>> f $$ x = f x
>>
>> *Main Data.ByteString> :t \x y z -> intercalate $$ intercalate x y $$ z
>> \x y z -> intercalate $$ intercalate x y $$ z :: ByteString
>> -> [ByteString]
>> -> [ByteString]
>> -> ByteString
>
>
> ...at which point we're reinventing Applicative, no?
Is "const" a reinvention of "return"?
You could write the above code with (<*>), but you'd need to convert
back and forth from Identity in order to get the proper Applicative
instance.
runIdentity $ Identity B.intercalate <*> Identity (B.intercalate x
y) <*> Identity z
At that point, you might as well save the noise and write,
B.intercalate (B.intercalate x y) z
--
Dave Menendez <dave at zednenem.com>
<http://www.eyrie.org/~zednenem/>
More information about the Haskell-Cafe
mailing list