[Haskell-cafe] How to "Show" an Operation?
Luke Palmer
lrpalmer at gmail.com
Wed Jun 9 18:08:34 EDT 2010
On Wed, Jun 9, 2010 at 12:33 PM, Martin Drautzburg
<Martin.Drautzburg at web.de> wrote:
> So far so good. However my "Named" things are all functions and I don't see I
> ever want to map over any of them. But what I'd like to do is use them like
> ordinary functions as in:
>
> f::Named (Int->Int)
> f x
>
> Is there a way to do this, other than writing
>
> apply::Named Int ->Int
> apply n x = (val_of n) x
What's wrong with that? (Other than the type signature, but I get
what you mean). The proper type signature is apply :: Named (Int ->
Int) -> Int -> Int.
You don't need the parentheses:
apply n x = val_of n x
Or just:
apply = val_of
I frequently suggest the following to new Haskellers: don't worry so
much about notation. Sometimes programmers get a picture in their
heads about how the code *should* look, and then they go through all
manner of ugly contortions to make the notation right.
I suggest that you will encounter much less pain if you accept
Haskell's straightforward notation, and focus on the meaning rather
than the syntax of your program.
So, to summarize: if you have something that isn't a function and you
want to use it like a function, convert it to a function (using
another function :-P). That's all. No syntax magic, just say what
you're doing.
Luke
More information about the Haskell-Cafe
mailing list