itコメントする入力で受け取ったByteStringを32bitの数値で扱いたい。方法がありそうだけど、自前で作成してみた。longとしてアクセス可能で便利であるが、型が厳密なHaskellではそうはゆかないようです。Word8を4つ切り取って、Word32へ変更という作戦です。itコメントするもうずいぶん前から、10年近くはなるんじゃないだろうか。いまに至るまでもずうっと考えていて、文章にはしていなかったこと。「関数プログラミング実践入門」という本にそのまま書いてあった。...ここでの「分かっている」は「言語機能として処理系の基準で判断できる」ということ...開発プロセスのノウハウや明らかになった理論をソースコードとの関連を持ったまま作業できる環境とすること。これにより次のことを可能にできる。...プログラマ自身が人間として限界のある記憶力でいつまで覚えているか、また、手を入れる他のプログラマも同様に分かっているか、は一切保証していません。...プログラマが言語の制約を破ることがそもそもできなければ、誰が処理に手を加えても性質は保証されるのです。事業継続のために情報が落ちずに引き継がれ、品質が確保しながら作業性を向上する。...多くの場合、プログラムはメンテナンスなりアップデートしてユーザーに提供しなけれなりません。仕様として正しい動作を定め直し、現実的なコストと時間内で、できればプログラマに過度の負担がかからない範囲で、プログラムに手を入れ続ける...プロダクトを提供し続けながら、実務者の負担を押さえていくことが可能ということだ。これがずっと欲しいと思っていたことだ。問題は明瞭で、ソフトウェアのライフサイクルはある技術者が担当する期間よりも遥かに長く、派生するソフトウェアまで含めてしまえば現役期間よりも長くなる場合が想定されるということ。そのため情報の漏れない伝承と教育が必要。この作業は個人には後ろ向きに捉えられやすく、後回しになりやすいということ。結果、ソフトウェアの品質は徐々に下がっていくということ。課題は単純で、ソフトウェアが満たすべき性質(仕様)をソフトウェアの本体であるソースコードと一体で扱える環境がないこと。仕様の検証やテストが人力であり、振り返り、現状調査、情報の整合確認が必要となり、綿密な作業計画までも必要とされる場合さえあること。これをいち早く解決できた事業はソフトウェア開発において大きなアドバンテーを得ることができるはずである。この分野はあまり注目をされない。バラダイムシフト以上のインパクトがあるし、技術者判断で適用困難な状況があるかもしれない。開発プロセスと密接に関連することであり、現状維持に傾きやすいのかもしれない。この本が述べている関数プログラミングもパラダイムシフトである。現場への負担は小さくない。課題の解消を実現できることを説明している。関数プログラミングを採用できなくても、なにがウィークポイントなのか、どのようにプロダクト開発へ適用できるのかのヒントにもなるだろう。考えるだけの価値は十分あると思う。itコメントするとても参考になりました。itコメントするData.Iniを使ってINIファイルを読み書きできるようになりました。不味かろう、使い勝手悪かろうというという後味。itコメントするini形式のデータをパースして値を取得できるようにします。ファイルが無いときの例外キャッチをできるようにします。Stringになります。いない~$catchはMonadCatchの型クラスを扱うためIOから抜けだせません。そのようなものなのでしょうか。いない~$iniファイルのフォーマットに沿ってないファイル、単にセクションが見つからないだけです。パースはできています。ちなみに実行ファイルサイズは4598736バイトでした。itコメントするn3337のRaw-stringをBNFCで定義する。tree]R"^^(あああ)^^"~$うまくパースしてくれているようです。itコメントするユニコードスカラ値にはサロゲートペアのための領域0xD800-0xDFFFがあり、この範囲は文字を割り当てることがきない。このためcharの範囲からこの部分を外す。[")"])+;~$BNFCはUTF-8で受け取るため、0xD800を無理やりUTF-8へコンバートする。リトルエンディアンであるので最初の0x0aは改行だ。勝手についてくるがおそらくechoかな。0a80a0ed0000004~$0xeda080をBNFCでパースしてみるが、haskellが受け取ってくれない。sequence)~$</stdin>サロゲートペア外の文字コードであれば問題なく受け取るのでパースできる。tree]あ~$BNFCが生成したテスト実行コードを変更してテストしてみる。テスト2:範囲外なのでパースエラーとなるはず。テスト2:範囲外なのでパースエラーとなるはず。tree]城~$テストが成功したので問題なしかな。itコメントするBNFCのcharは0〜255の文字コードしか扱えない。これをUnicodeの範囲に広げる。tree]あいうえお$うまくできました。itコメントするUTF-8へのエンコードは2種類ある。Codec.Binary.UTF8.String>どちらもUTF-8のコード並びに変換されるが、encodeはWord8、encodeStringはStringの配列に格納される。最初のStringはUnicodeスカラ値でUnicodeの文字集合全体を扱える。encodeStringはUTF-8にencodeするけれど、Stringに格納するのは混乱がでるかな。できればStringはUnicodeスカラ値のクラスとして統一してほしいところ。itコメントするこの記事も文字列扱いの理解を助けてくれます。WordPressTop。