[haskell]UTF8へのencode

UTF-8へのエンコードは2種類ある。

どちらもUTF-8のコード並びに変換されるが、encodeはWord8、encodeStringはStringの配列に格納される。

最初のStringはUnicodeスカラ値でUnicodeの文字集合全体を扱える。encodeStringはUTF-8にencodeするけれど、Stringに格納するのは混乱がでるかな。できればStringはUnicodeスカラ値のクラスとして統一してほしいところ。

[haskell]内部文字コード

Haskellの文字列扱いを少し

出力結果

Haskell内部ではUnicodeスカラ値で扱われている。

printはどうやらBasic Latinしか文字を表示することができないようで、後は内部コードをそのまま表示している

putStr(Ln)については内部コードに応じたフォントを表示してくれる。

内部コードとUTF-8との変換はencodeString(内部コード >> UTF-8)とdecodeStringを使う。

フォント表示についてはLANG環境変数が影響する。

UTF-8であることをLANGで設定していないと出力で例外となる

[haskell]ディレクトリのリストを出力する

ディレクトリのリストを出力する。ファイル内容を出力する時と同じ要領で作ることができた。

  • dirsから”.”と”..”を除いたリストに対しmapM_でputStarLnをマップしている

haskell事始め

haskellをはじてみる。まずはファイルを扱えるようになることから。以下のコードでファイルの内容を出力するプログラムができる。

  • getArgsは引数を[String]で返してくれる。'<-‘は結果をargsに束縛する。
  • case args of は条件分岐
  • argsが'[]’空リストなら getContentsアクションの結果をputStrアクションに渡す。
  • それ以外なら、argsの各要素に無名関数(\x -> readFile x >>= putStr)をマップ

参照サイト

設計するということ

Z3 – guide

興味あってZ3のチュートリアルをやってみた。設計や検証に使えるのかを知りたかったので。

関数の定義や取りうる値の範囲を決めるところなど、なんとなくソフトウェア設計そのものをやっているみたいだ。しかも、設計をしながら検証を同時におこなえる。

設計の検証をいつでもおこなえるというのはとても良いことではないだろうか。