[Haskell-beginners] OpenGL keyboardMouseCallback ...confused over type
Sean Charles
sean at objitsu.com
Fri Jul 1 10:19:04 CEST 2011
On 30/06/11 23:53, Arlen Cuss wrote:
[snip]
>> and modify the assignment in main to this:
>>
>> keyboardMouseCallback $= Just (myKeyMouse gameState)
I think that part of my confusion was, on reflection, caused by the fact
that coming from a procedural background, the syntax of "Just
(myKeyMouse gameState) still reads as "function call arguments", so if I
may be permitted to expand on that to see if I now understand Haskell a
little more ...
The form: "Just (myKeyMouse gameState)" looks like its calling the Just
function with two parameters as the () is also used to define a tuple.
So is (myKeyMouse gameState) a tuple of one, the result of calling that
function with that parameter or is just a way of ensuring that the
function is performed before it is passed to Just as the one and only
parameter?
I know the correct answer but I did sometimes get confused over when is
a tuple "()" not a tuple, especially in things like this:
foo (x:xs) = ...
I *know* it is pattern matching using ':' and that ':' takes a thing and
a list of things and returns a list of same things but old habits.. DOH!
Back to the chase.
If I had rewritten the Just called like this I think it would have been
clearer about what was happening:
Just $ myKeyMouse gameState
as that quite clearly says, call myKeyMouseFirst and then hand the
result to Just. From that point, Arlens great description of how it
trundles through the type system, resulting in a partially evaluated
function that has the *same* type as the expected one for the
keyboardMouseCallback is really making it clearer for me now. That was a
loud Eureka moment in my kitchen over breakfast this morning I can tell you!
It just needs to settle in and join the rest of the facts jostling for
top position on the "Don't forget..." list.
Once again "list", I thank thee muchly for helping this troubador of
trouble travel the road to Haskell...
:)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20110701/dd75b4e8/attachment.htm>
More information about the Beginners
mailing list