Difference between revisions of "User:JRV"

From HaskellWiki
Jump to navigation Jump to search
(Got rid of draft tutorial)
 
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
Here, we develop a simple (Mac) Xcode project using Cocoa, the Interface
 
Builder (IB). The project follows the Model-View-Control design pattern
 
encouraged by Apple, with the View and Control entirely in Cocoa and IB, and
 
the Model in Haskell.
 
 
This is far from fulfilling the request found in the
 
[[Missing_tutorials | Missing tutorials]] page.
 
But it is a simple process, not requiring
 
adding any Xcode plugins, or other extra applications.
 
 
It assumes you know something about Xcode, and something about Haskell.
 
Its not an objective-c bridge.
 
 
== Why? ==
 
Why would you want to do this? Those with Xcode/Cocoa experience will not
 
need an explanation. On the chance that someone else is browsing here,
 
I'll list a few things.
 
 
* Cocoa is not a language, it is a vast library of Objective-C objects.
 
 
* Cocoa covers tasks such as:
 
** windowing,
 
** displaying tables, outlines, trees,
 
** text fields (with built in editing),
 
** pretty easy printing, with pdf automatically available, and
 
** on and on...
 
* Objective-C is built on C, and is basically syntactic sugar for C.
 
 
Together with Interface Builder, one can define most user interfaces with
 
simple drag and drop from a library of element, then connect them with your
 
code by dragging and drop in the IB screen.
 
 
You automatically get full integration with the Mac system. You get the
 
Mac Aqua look.
 
 
Enough said. What Cocoa doesn't provide are the tools for mathematical
 
modeling of an application domain that Haskell provides. Parsing comes
 
immediately to mind.
 
 
In the interest of full disclosure—I'm not an old time Mac person. I've
 
had my Mac for two years. I only decided to learn Objective-C and Cocoa
 
after I explored doing an application using Python and Qt, and someone in
 
the Python community said “Objective-C is easy. Why don't you write a real
 
Mac application”. Neither am I a Haskell expert. Although I've tinkered
 
with Haskell for a long time (and it is probably my favorite language),
 
I've just come back to it after a couple years away.
 
 
== Overview ==
 
[[image:JRV_CocoaHaFib_before.png|thumb|350px|right]]
 
Here are screen shost of the simple application we will develop. The first
 
shows the application widow (together with the menu automatically generated
 
by Xcode), ready to enter a number.
 
 
The second shows the same scene after entering a number in the text box,
 
and pressing “return”.
 
 
The entire user interface was built in a short time using the graphical
 
Interface Builder, by dragging text the entry box, and the labels from a
 
library of “controls” onto the window. Notice that the labels are dynamic,
 
in the line “Fibonacci Number for n = is: ”.
 
 
I won't discuss Interface Builder any further in this tutorial.
 
 
[[image:JRV_CocoaHaFib_after.png|thumb|350px|right]]
 
 
== Compile Haskell module ==
 
== Import into Xcode project ==
 
== Compile and run ==
 
== To do ==
 

Latest revision as of 16:22, 2 November 2009