2007-01-01から1年間の記事一覧

バージョンアップしました

バージョン1.7.0です。 変換方法に「明るさ変更」を追加しました。 今回鏡三シリーズは明るさ変更の機能を追加しました。年内にバージョンアップしたいと思いつつ前に作ったロジックを流用できるからと今日の今日まで手つかずで、追い込まれたのであわてて機…

バージョンアップしました

バージョン1.2.0です。 変換方法に「明るさ変更」を追加しました。

バージョンアップしました

バージョン0.11.0です。 変換方法に「明るさ変更」を追加しました。

バージョンアップしました

年内駆け込みバージョンアップです。バージョン1.8.6です。 色0を設定できるようにしました。 最初のバージョンは1997年1月ですよ。10年以上経っているのですね。同類のソフトと比べるとかなり古くさいものになってしまいました。関連でギャラリー28を追加し…

モナド

名前は聞いたことがあるけどどんなものかがまったく分からないモナドです。モナドの条件として(>>=)とreturnの二つを実装する必要があり、これがモナド則を満たしている必要があるとのこと。具体的に三つのモナド則が書いてあるのですが、いきなり見せられて…

どうせだったらもう一歩

Perlプログラムをコンパクトに記述する方法という記事で、特殊変数を使ってスクリプトをコンパクトに記述する方法が説明されています。気になったのが最後のコードのこれ。 $num = 0; while (<>) { $num = $num + 1; print "$num\t$_"; } 特殊変数を使うとい…

モジュールのインポート

importでモジュールをインポートできます。 import Text.Regex 特定のエンティティだけをインポートすることもできます。 import Text.Regex(mkRegex, matchRegex) 反対に特定のエンティティを除いてインポートすることもできます。この場合はhidingを付けま…

SEを英語で言うと

そういえば、英語ではシステムエンジニアと言わないというのを何かで見たなとふと思い出して、それじゃあ何と言うのだろうというのを調べてみました。調べると言っても知っていそうな人が周りにいるわけではないのでGoogleで検索。"system engineer" の検索…

モジュール

moduleでモジュールを定義することができます。というのは分かったのですけど、具体的にどう書けば良いのかや、モジュールを定義したファイルをどこに配置するのかというのが分かっていないので、自分でモジュールを書くというのはできないです。12章がWiki…

演習問題

9章の演習問題。自力でできました。 import List data Line = Line { number ::Int, string :: String } deriving Show ln1 = Line 10 "L10" ln2 = Line {number = 20, string = "L20"} lns = [ln1, ln2, Line {number = 15, string = "puts"}] main = do pr…

型クラスの継承

ざっとキーワードだけ。型クラスの宣言はclassで行います。宣言の中ではクラスメソッドの型宣言と、クラスメソッドのデフォルト実装を書くことができます。型を型クラスのインスタンスだと宣言する時はinstanceを使います。宣言の中でクラスメソッドの実装を…

型クラスの例

sort :: (Ord a) => [a] -> [a] ここで出てくる「(Ord a) =>」が型クラスの制約を示す構文だそうです。今まで説明で「(Show a) => a -> String」とか「(Eq a) => [a] -> [a] -> Bool」なんて出てきて何だろうと思っていましたけど、これで一つ謎が解けました…

バージョンアップしました

バージョン0.7.0です。 「ランダム設定」を追加しました。

型クラス

型クラスを一言で言うと型に対する制約というので良いのでしょうか。性質とか特徴と捉えた方が分かりやすいような気もしますけどどうなのでしょう。本には例としてsort関数のことが書かれていて、sort関数は整数のリスト・浮動小数点のリスト・文字列のリス…

バージョンアップしました

バージョン0.10.0です。 色の設定をできるようにしました。 今までは白・灰・黒の点だけを使っていたのですが、今回のバージョンアップで他の色を使えるようにしました。色を設定できるようになったからと言って、その色に応じた計算をするわけではないので…

型の別名と付け替え

type FilePath = String typeを使うと型に別名を付けることができます。 type MyList a = [a] このように型変数を使うこともできます。 newType StackNT a = MkStackNT [a] 今度はnewTypeです。既存の型を元にして新しい型を宣言できるそうです。これという…

Seraphic Blueをクリアしました

2回目です。初回のプレイでは特に前半部分で訳の分からない部分が多かったのですが、今回は背景が分かっていて初回プレイとは違った面白さがありました。最終セーブ地点でのプレイ時間は46:12:39。平均レベルは122.25。エンカウント数513。初回プレイとくら…

代数的データ型その10

再帰的な型です。 data Stack a = Empty | Push a (Stack a) 上記のように自分自身を型の宣言に使えます。と言うわけで本に書いてあった例を基にして、サンプルを作ってみました。 data Stack a = Empty | Push a (Stack a) isEmpty :: Stack a -> Bool isEm…

代数的データ型その9

共用体スタイルについて。 data PTItem = Pram Int | Text String このように複数のデータコンストラクタのうちのいずれかを使うという書き方ができます。どのデータコンストラクタを使ったかの判別はパターンマッチで行えます。 data PTItem = Param Int | …

掲示板spam対策

掲示板だったらフリーのスクリプトや無料で使えるものがたくさんあるのでそれを使っていれば良いのでしょうけど、以前に自作したのをそのまま使い続けています。ですので完全に独自の掲示板なのですが、こんなところにまでspamがよくやってきます。spamにつ…

バージョンアップしました

バージョン0.5.0です。 Ruby、VBScript、JScriptに対応しました。 クリップボードにコピーした時に選択範囲を解除するのを止めました。 結構前からRuby対応はやりたいと思っていて、ようやく実現しました。

代数的データ型その8

列挙型スタイルについて。 data OpenMode = ReadOnly | WriteOnly | ReadWrite このように書くそうです。これは「ReadOnly」または「WriteOnly」または「ReadWrite」という意味。これだけなら難しくないですね。

代数的データ型その7

多相的な型の宣言というのが出てきましたが、ここではパス。型コンストラクタとデータコンストラクタは同じ名前を使うことができるそうです。 data Anchor = A { aUrl :: String, aLabel :: String } これまでは上記のように書いていましたが、こんな風に書…

代数的データ型その6

代数的データ型の章はまだまだ続きます。今回はフィールドの更新について。更新と言ってもHaskellでは再代入はできないので、既存の値を元に新しい値を作るのですが、その際に一部のフィールドだけを変更して値を作ることができます。サンプルプログラムを作…

登録語数

クロスワード辞典の登録語数が5,000個になりました。登録して下さった方ありがとうございます。今年の2/12時点で3,055個だったので9カ月半ぐらいで2,000個弱の登録数です。登録語数が増えるにしたがって登録のペースが落ちていくとすると、10,000個になるの…

代数的データ型その5

今回はセレクタについて。フィールドラベルを使って代数的データ型を宣言すると、フィールドラベルと同名の関数が自動的に宣言されて、フィールドの値を取得できるとのことです。id:MAS3:20071124#c1195912479のコメントでも使われていました。それでは早速…

バージョンアップしました

バージョン1.7.0です。 ヘルス&ビューティー・時計・ベビー&マタニティ検索に対応しました。 評価の星を画像で表示するようにしました。 ステータスバーにリンク先URLを表示するようにしました。 約1年ぶりのバージョンアップです。

代数的データ型その4

データにアクセスするのに専用の関数を作っていますが、無名関数で代用してみました。 data Anchor = A { aUrl :: String, aLabel :: String } main = do putStrLn $ "Url : " ++ (\(A u _) -> u) getAnchor putStrLn $ "Label: " ++ (\(A {aLabel = l}) -> …

代数的データ型その3

data Anchor = A { aUrl :: String, aLabel :: String } というようにフィールドラベルを付けることができます。こうするとフィールド名でデータにアクセスできるようになります。フィールドラベルを使った方法でサンプルを書き換えてみます。 data Anchor =…

代数的データ型その2

data Anchor = A String String このように宣言した型のフィールドにアクセスするにはパターンマッチを利用します。早速サンプルを作って試してみます。 data Anchor = A String String main = do putStrLn $ "Url : " ++ getUrl getAnchor putStrLn $ "Labe…