私はすでにこれについて質問があると思ったが、見つけられなかった。GHC:編集日を挿入
私のプログラムは、コンパイルされた日付をプリントアウトします。それを設定する最も簡単な方法は何ですか?
私はいくつかの可能性を考えることができますが、どれも「簡単」とは言えません。理想的には、私はghc --make Foo
を実行し、実行するたびにFoo
を出力することができます。心に春
様々な非簡単な可能性:
はテンプレートHaskellのこちらをご覧ください。
Data.Time
を使って今日の日付を取得する方法を解説します。それを文字列に変換する方法を探します。 (今は私のプログラムでは動作させるためにTHが必要ですが、毎回そのモジュールを再コンパイルするように説得する必要があります。そうでなければ、プログラム全体ではなく決してそのモジュールのコンパイル日を取得しません)システム日付を含む小さなHaskellモジュールを生成するシェルスクリプトを書く。 (今、私はそのシェルスクリプトを使用するのではなく、直接私のプログラムをコンパイルする必要があります。また、Windows上でシェルスクリプトが望まれるべきくらいの葉!)
座って含む小さなHaskellのモジュールを生成し、いくつかのHaskellのコードを書きます日付。 (以前のアイデアよりも移植性が高いですが、余分なビルドステップや印刷された日付が間違っています)
Cabalでこれを行うにはいくつかの方法があるかもしれませんが、本当にこの小さなプログラムをパッケージ化したいのですか?日付施設を取得するには?
もっと簡単な提案はありますか?
エイリアス '' GHC -DNOW = "\" 'date' \ "に相当何か"' '(つまりは、Windowsシェルのためにどのように見えるか全く分からない)にGHCし、あなたのモジュールの使用' {中 - #LANGUAGE CPP # - } 'と' now = NOW'を返します。醜いハックは、より多くの作業を必要とする、よりクリーンな選択肢にあなたを追いやるだけの醜いかもしれません。 –
@DanielFischerはどうやらWindowsのシェルは、コマンドの出力から変数を設定するための任意の機能を欠いています。代わりに、stdinからテキストを読み込む 'SET/P VAR ='に関するハッキングを使用する必要があります。コマンド出力をファイルにパイプしてパイプして戻すと、あなたが望む効果を得ることができます...しかし、イエス! > _ < – MathematicalOrchid
ああ、うわー。 PowerShellにもその機能はありませんか? –