Archive for the ‘Haskell’ Category

  1. Hello, COM(Haskell) World!

    Posted on 1月 27th, 2013 by cx20

    COM(Haskell)

    COM(Component Object Model)はマイクロソフトの提唱するプログラム部品の仕様である。
    COM を用いて開発された部品であれば言語を問わず利用することができる。
    以下は Haskell にて COM support library を使用した COM クライアントの例となっている。

    ソースコード

    import System.Win32.Com
    import System.Win32.Com.Automation
     
    main = do
        coInitialize
        shell <- createObject "Shell.Application";
        method0 "browseForFolder" [inInt 0, inString "Hello, COM(Haskell) World!", inInt 0, inInt 36] shell

    コンパイル方法

    C:¥> ghc Hello.hs

    実行結果

    +----------------------------------------+
    |Browse For Folder                    [X]|
    +----------------------------------------+
    | Hello, COM(Haskell) Wolrd!             |
    |                                        |
    | +------------------------------------+ |
    | |[Windows]                           | |
    | | +[addins]                          | |
    | | +[AppCompat]                       | |
    | | +[AppPatch]                        | |
    | | +[assembly]                        | |
    | |     :                              | |
    | |     :                              | |
    | |     :                              | |
    | +------------------------------------+ |
    | [Make New Folder]    [  OK  ] [Cancel] |
    +----------------------------------------+
  2. Hello, Win32 API(Haskell) World!

    Posted on 6月 27th, 2012 by cx20

    Win32 API(Haskell)

    Win32 API は、Windows の機能にアクセスする為の API(Application Programming Interface)である。
    以下は Haskell による Win32 API の呼出し例である。

    ソースコード

    import Graphics.Win32.GDI.Types
    import System.Win32.Types
     
    messageBox :: HWND -> String -> String -> UINT -> IO UINT
    messageBox hwnd text caption style =
      withTString text $  c_text ->
      withTString caption $  c_caption ->
      failIfZero "MessageBox" $ c_MessageBox hwnd c_text c_caption style
    foreign import stdcall unsafe "windows.h MessageBoxW"
      c_MessageBox :: HWND -> LPCTSTR -> LPCTSTR -> UINT -> IO UINT
     
    main = messageBox nullHANDLE "Hello, Win32 API(Haskell) World!" "Hello, World!" 0

    コンパイル方法

    C:¥> ghc hello.hs

    実行結果

    ---------------------------
    Hello, World!
    ---------------------------
    Hello, Win32 API(Haskell) World!
    ---------------------------
    OK   
    ---------------------------
  3. Hello, Haskell World!

    Posted on 12月 14th, 2011 by cx20

    Haskell

    Haskell は関数型プログラミング言語のひとつ。名前は論理学者であるハスケル・カリーに由来する。

    ソースコード

    main = putStrLn "Hello, Haskell World!"

    コンパイル方法

    $ ghc -o hello hello.hs

    実行結果

    Hello, Haskell World!