Difference between revisions of "User:JRV"
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 == |