prototype-0.3: prototype.cabal
build-type: Simple
cabal-version: >= 1.2
name: prototype
version: 0.3
stability: experimental
author: Yoshikuni Jujo <PAF01143@nifty.ne.jp>
maintainer: Yoshikuni Jujo <PAF01143@nifty.ne.jp>
license: BSD3
license-file: LICENSE
category: Development
synopsis: prototype-based programming on Haskell
description: prototype-based programming on Haskell
.
You can download source codes by git.
.
git clone git:\/\/github.com\/YoshikuniJujo\/prototype.git prototype
.
Example code
.
> module Main where
>
> import Control.Prototype
>
> main :: IO ()
> main = fmap fst $ flip runPT initPTEnv $ do
> dog <- clone object
> name <- makeMember "name"
> setName <- makeMember "setName"
> sit <- makeMember "sit"
> setMethod dog setName $ \this [ n ] -> do
> setMember this name n
> return [ ]
> setMethod dog sit $ \this _ -> do
> n <- member this name
> liftPT $ putStrLn $ fromPrimStr n ++ " sitting."
> return [ ]
> myDog <- clone dog
> method myDog setName [ primStr "John" ]
> method myDog sit [ ]
> return ()
.
Another sample
.
> module Main where
>
> import MyToolkit
>
> main :: IO ()
> main = runToolKit $ do
> ( textView, setText, setContentView ) <- importMyToolkit
> myTV <- clone textView
> method myTV setText [ primStr "Hello, world!" ]
> method myTV setContentView [ ]
> return ()
library
hs-source-dirs: src
exposed-modules: Control.Prototype
build-depends: base > 3 && < 5, monads-tf
ghc-options: -Wall