私は、テキストインターフェイスのファンとして、 GUIではなくサブジェクト指向のDSL言語を好みました。 しかし、言語パーサーをゼロから作成することは簡単ではありません。 完成したHaskell言語に型を追加する方がはるかに優れています 。
データ状態
=未実施
| 行われています
| 製
今月のデータ
= 1月
| 2月
| マーサ
| 4月
| 5月
| 6月
| 7月
| 8月
| 九月
| 10月
| 11月
| 12月
データ日付=月の日付整数整数
データ
=いつ
| C日付
| 日付で
| 日付間
| 年齢の整数
へのデータ
=作業中
| ホーム
| お客様へ
| ナクルト
| 店で
データWhom
=息子
| 娘
| 子整数
データコム
=不明
| 信仰
| カティア
| マーシャ
データ何
=ツリー
| ハウス
| 肝臓
| 会社
| 工場
| 学校
| 幼稚園
| 大学
| 宝物
データWhat Document
=契約
| 遺言
| 契約
| 卒業証書
データ休日
=新年
| 誕生日
データ対処方法
=生まれた
| 死ぬ
| 結婚して
| 出産する
| 何を植える
| ビルドする
| 何を終える
| 何を見つける
| 何を整理する
| 何を買う
| 何を売る
| どのドキュメントに署名する
| 整数を獲得
| 祝日を祝う
| どこへ行く
| に行く
| 飛ぶ
| に浮かぶ
データプロジェクト
=プロジェクト文字列[プロジェクト]
| アクション状況対処方法
ライフ::プロジェクト
life = Project "Life" [
Action Born(Age 0)完了、
教育プロジェクト[
アクション(卒業)(16歳)完了、
アクション(卒業)(20歳)完了
]、
プロジェクト「家族」[
アクション(不明)何かが完了したら、
一度も実行されていない場合のアクション(息子への出産)
実行されていない場合のアクション(娘を産む)
アクション(出産(子供1))WhenNever Done
]、
プロジェクト「仕事」[
アクション(契約に署名)なしの場合、
アクション($ foldr(*)1 [1..20]を獲得)何かが完了したとき
]、
プロジェクト「休憩」[
アクション(新年を祝う)(2009年12月31日の間(2010年1月4日))
]、
何かが行われないとアクションが死ぬ
]
ユニバース::プロジェクト
universe = Project "Everything Else"(ユニバースの繰り返し)
-プロジェクトは、すべてのアクティビティが完了すると完了します
完了::プロジェクト-> Bool
完了(アクション_ _完了)= True
完了(プロジェクト_リスト)=完了したすべてのリスト
完了_ = False
-nbgf ghbrjk
回答::プロジェクト->整数
答え_ = 42
ghciインタープリターでファイルをダウンロードする
GHCi、バージョン6.8.2:http://www.haskell.org/ghc/ :? 助けを求めて パッケージベースを読み込んでいます...リンクしています... プレリュード>:l now / gtd / gtd.hs [1 of 1] Mainのコンパイル(現在/ gtd / gtd.hs、解釈済み) OK、ロードされたモジュール:メイン。 *メイン>ライフアンサー 42 * Main> answer universe 42 *メイン>ライフ完了 偽 *メイン>完成した宇宙 ***例外:スタックオーバーフロー *メイン>
宇宙がスタックよりも大きいことを示しています:)
GTDツールへのどのクエリまたはレポートが役立つかを知りたいですか?