OverloadedStrings を使うと文字列を、Text、ByteString リテラルとして扱ってくれる。

OverloadedStrings 言語拡張を使うとダブルクオートで囲んだ文字列を、Text、ByteString リテラルとして扱ってくれるようになります。あどけない話・Haskellライブラリ入門 (2011年版) {-# LANGUAGE OverloadedStrings #-} module Main where import qualifi…

Haskellで文字列を EUC-JP ⇔Shift_JIS 変換する。

とほほのWWW入門/ 漢字コードについて(各コード間の変換アルゴリズム)を参考にEUC-JPからShift-JISへ変換します。 ASCII このアルゴリズムは全角文字のEUC-JP ⇔Shift_JIS 変換です。ASCIIについては変化ありませんのでそのままリストに追加していきます。 半…

Foldable を使ってみる。

Data.Foldable これはData.Foldableにある例ですが、Tree型のFoldableインスタンスを定義することによってFoldableに定義されている関数を使用できるようになります。 Foldableインスタンスを定義するには、foldMap またはfoldrを定義すれば良いらしい。 imp…

出力する値を型を指定することにより変化させる( Use -XTypeSynonymInstances if you want to disable this)

maxBound、minBound は出力する型を指定するをその型が表現できる最大値、最小値を出力します。 > maxBound::Char -->'\1114111' > maxBound::Int --> 2147483647 > minBound::Char -->'\NUL' > minBound::Int --> -2147483648 これと同じように自分でも出力…

「実装して理解する遅延評価の仕組み 〜 thunkを絵に描いて理解しよう」をRubyで

実装して理解する遅延評価の仕組み 〜 thunkを絵に描いて理解しよう・JavaScriptでHaskellを実装!?をRubyで写経してみます。 Thunk、 Lambda、App、Evaluateクラスは instance_of? により型を調べるためのものです。 Thunk でくるんである以外は lambda から…

TextCtr のフォーカスがオン・オフになったとき背景色を動的に変化させる(wxHaskell)

TAB キーでTextCtrlを移動してフォーカスがON、OFFになたとき、または、マウスでTextCtrlを選択してフォーカスがON、OFFになたときに背景色を変化させたい。 現在どの wxTextCtrl に入力しているか明確にするために、フォーカスがオンになっている wxTextCtr…

Haskell から nkf を直接使って文字コードを変換する。

Cinnamonのインストールが出来たら使ってみます。 NKFの使い方については「Rubyist Magazine 標準添付ライブラリ紹介 【第 3 回】 Kconv/NKF/Iconv」のNKFの部分に丁寧な説明があります。 -- 「標準添付ライブラリ紹介 【第 3 回】 Kconv/NKF/Iconv」より --…

nkf を使用した文字コード変換ライブラリCinnamonのインストール

CinnamonはHaskellからnkfを呼び出し、文字コードを変換するためのライブラリです。便利なライブラリなのですがエラーが発生するため、そのままではインストール出来ません。修正してインストールする手順をまとめました。 こちらよりcinnamon-0.2.tar.gz を…

nkf を使用した文字コード変換ライブラリCinnamonのUCS4->UTF8の変換

nkf を使用した文字コード変換ライブラリCinnamon についてUCS4⇔UTF8の変換にてバグらしきものを発見したと指摘があります。指摘されているのは UCS4 の1文字を Utf8 の複数バイトに変換する ucs4CharToUtf8Chars 関数です。文字列を変換して比較し、ucs4Cha…

Haskell でSJIS文字列に変換したときのバイト数を得る。

Haskell でSJIS文字列に変換したときのバイト数を得る。 ターミナルに表を表示するときには固定幅フォントを使いますが、アルファベット、半角カナの混じった日本語を使って表を表示すると表が乱れてしまいます。 幅が半角フォントは全角フォントの半分です…