ウォンツテック

そでやまのーと

ちょっとインタフェースを変えてベータ変換数を入力しなくてもいいようにした。
ついでにgithubリポジトリ作って突っ込んでおく。
あと、elispemacsの簡単なメジャーモードを作成
lambda.lmとか適当なファイルでラムダ式書いておいてbeta-modeにしてからC-cbとかC-cnでラムダ計算出来ます

http://github.com/sodeyama/lambda-calculation
しかし、githubでのリポジトリ作成簡単&親切誘導すぎわろた。
sourceforgeの30倍くらい楽。

;; beta-mode
(defvar betabin "/home/sode/git/beta-calculation/beta")

(defun beta-mode ()
  (interactive)
  (setq major-mode 'beta-mode
    mode-name "beta mode")
  (setq beta-local-map (make-keymap))
  (define-key beta-local-map "\C-cb" 'beta-reduction)
  (define-key beta-local-map "\C-cn" 'beta-reduction-show-native-tree)
  (use-local-map beta-local-map))
 
(defun beta-reduction ()
  (interactive)
  (beta-reduction-inner "false"))
 
(defun beta-reduction-show-native-tree ()
  (interactive)
  (beta-reduction-inner "true"))
 
(defun beta-reduction-inner (is_tree)
  (save-excursion
    (let ((in_str (buffer-string)))
      (start-process "beta-process" "*beta-buffer*" betabin in_str is_tree)
      (let ((buffer (get-buffer "*beta-buffer*")))
        (switch-to-buffer-other-window buffer)
        (goto-char (point-max))))))