2016-08-19 10 views
4

私は単純な生産プロセスを実行するためにHaskellを使用しようとしています。多くの生産プロセスと同様に、それは場所のいたるところで物事の状態を変えることを伴う。私は物事を追跡し、選択的にインタラクティブなHaskellのにコマンドを実行することができ、スクリプトファイルを持っているため、このような理由から、それはESSと同様、場合、それは本当にクールになるHaskell/Intero - Interop REPLバッファにラインを送ります。

-- to start the process 
process <- startProcess 

-- to stop process 
stopProcess 

-- to check how things are going 
summary <- checkStuff 
summary 

-- optionally restart bad processes 
restartProcesses (getBadProcesses summary) 

-- send summary emails 
sendSummaryEmails summary ["[email protected]", "[email protected]", 
          "[email protected]" "[email protected]", 
          "[email protected]"] 

-- set up something big that I don't want to have to retype/paste every time 
studentGrades <- getStudentGrades "John Peterson" 
gen <- getStdGen 
let (randomTest, gen') = generateRandomTest studentGrades gen 
compilePdf randomTest 
answers <- getAnswers 
gradeTest randomTest answers "John Peterson" 

のようなもの、本当に便利になりますあなたがボタンを押してこれらの行をreplプロセスに送ることができるならば、RのEmacs(統計を話す)たぶん、行、段落、領域のための別々のボタン。これを行う方法はすでにありますか?

たとえば、C-Retは、C-c C-cが段落を送信し、C-c C-rが行を送信します。

+0

正しいコマンドとパラメータを使用して、ファイルをreplにロードしないようにするにはどうしたらいいですか?適切な 'main'関数と一緒にコードをコンパイルすることからあなたを守ることは何ですか? – MarLinn

+0

私は一度にこのコードを実行したくないので、プロセスの現在の状態に応じて選択的にreplにロードして、1回のキーストローク( 'C-Ret')で実行すると、 (10〜60回のキーストローク)と、emacsのコピー貼り付け(約5回のキーストローク)よりも5倍以上効率的です。 –

+0

私は、その場で実行する方法をカスタマイズすることもできます。そのため、それらを単一のコマンドにコーディングしてからモジュールを再ロードすることは、スクリプトの行を変更してバッファに読み込むよりも効率が悪いです。 –

答えて

1

これはlispの関数はHaskellのREPL

(defun haskell-send-command (cmd) 
    (process-send-string (inferior-haskell-process) (concat cmd "\n"))) 

にコマンドを送信するEmacsとあなたがglobal-set-keyとそれにキーボードショートカットを割り当てることができ、これは現在の選択で

(defun haskell-send-selection() 
    (interactive) 
    (haskell-send-command (x-selection))) 

を前のものを呼び出します。次に、送信したいものをすばやく選択する方法を理解する必要があります。たとえば、M-hはマークパラグラフです。それとも、あなたが好きなESS機能を再コード:

(defun haskell-send-paragraph() 
    (interactive) 
    (mark-paragraph) 
    (haskell-send-selection)) 

私はEmacsで実際にHaskellのための小さなデバッグGUIを構築するために、これらを使用していました。私はブレークポイントとステッピングを設定するためのショートカットを持っており、デバッガの位置はhaskellコードで直接ハイライトされます。

関連する問題