Python: wxFormbuilder を使ってwxPythonアプリを作る。

PythonとwxPythonのGUIビルダwxFormBuilderを使って、テストアプリを作ってみました。 なぜ、wxPython なのか。 wxWidgets を使っていますので、Windows、macOS、Linux で動かすことが出来るからです。 【環境】 Python 2.7.8 wxPython 2.8 wxFormbuilder 3.…

Python: win32com を使ってDBにADO接続してみる。

Python and ActiveX Data Objects (ADO)を参考にMS AccessのMDBにアクセスしてみました。 使用しているMDBは「Win32OLE 活用法 【第 3 回】 ADODB」のsample1.mdbです。 # -*- coding: cp932 -*- import win32com.client import sys import codecs # 参考 # …

wxHaskell :: Notebook で tab を選択したときのイベントを取得する

radio box や list box 、choice は on selectによって選択したときのイベントを取得できますが、NotebookにはSelectingインスタンスがありません。そこで on click イベントによりどこのタブがクリックされたか判定します。 on click イベントはマウスがク…

正常にパース出来た場合はJust、失敗した場合はNothingを返すmaybeRead

read関数は文字列から指定された型のデータを生成します。 型が指定されない場合、read関数はどんな型に変換すれば良いか分からないので例外を発生します。 また、パースにエラーがある場合にも、例外を発生します。 > read "123"::Int -- > 123 -- 型が指定…

GHC の ScopedTypeVariables オプション

Rosetta Code にあるDetect division by zeroをコンパイルしてみたのですが、GHC 7.6.3ではエラーになってしまいます。出力されたエラーメッセージで検索すると arising from a use of `Control.Exception.catch' がみつかりました。 {-# LANGUAGE ScopedTyp…

GHCi runtime linker: fatal error: I found a duplicate definition for symbol

Windows 8.1にGHCの環境を構築しているのですが、 GHCi runtime linker: fatal error: I found a duplicate definition for symbol というエラーが出るようになってしまいました。エラー・メッセージで検索したサイトのひとつに次のサイトがありました。GHCi…

HaskellからCの配列を利用する

ITプロに「本物のプログラマはHaskellを使う」が連載されていますが、今回の記事はは「第58回 Cの配列をHaskellで利用する」です。丁度配列を使いたいところでした。しかし、Array 型は、参照は O(1) で出来ますが、 更新には O(n) かかります。 そこで、記…

with を使って C の関数へポインタ渡しをする

Foreign.Marshal.UtilsのwithはC の関数への引数をポインタ渡しするときに使う。 -- ghc --make -Wall frexp.hs test.c -o frex {-# LANGUAGE ForeignFunctionInterface #-} import Foreign.Ptr import Foreign.C.Types import Foreign.Marshal.Utils foreig…

hashtables: Mutable hash tables in the ST monad を使う。

Data.HashTableを使おうとすると hashtables パッケージを使えというメッセージがありましたのでインストールしてみました。 Announcing: "hashtables", a new Haskell library for fast mutable hash tables hashtables とhashableをインストール。 hashtab…

Haskellによる西暦(Day)⇔和暦変換、和暦の比較(定義ファイル読み込みバージョン)

定義ファイルで元号名、元号が使用開始された西暦年月日、最終西暦年月日を定義ファイルから読み込みます。 代数的データ型のアクセサを使うと可読性が悪くなるので、パターンマッチにより取り出す方法を使うようになりました。 module Main where import Da…