2007年10月31日 星期三

[Cat]暫存

http://www.cat-language.com/tutorial.html
改天再看吧
如果有時間的話啦..Orz
現在要先應付期中考

--
剛剛稍稍摸了一下
第一次用stack-base的language
相當好玩的感覺
如他所說的,應該會很適合用來教學用

改天再來進一步玩玩看吧.. :)
edit: 11/01/2007 Pm 7:40

2007年10月29日 星期一

[Epigram] Basic Intro.

Epigram 基本使用

epigram是個詭異的editor-typechecker-interpreter
同時你對它可以做幾乎"不可逆"的edit動作
而每當你結束一個shed(下面會解釋何謂shed)的edit
epigram也會同時對那段的內容作typecheck
此外,你也可以藉由某個特定指令發揮這個"環境"的interpreter功能

在epigram裡面有三種常見的區塊:
第一種:
> -----------------------
> ...
> -----------------------
夾在兩條-----中間的叫做declaration
-----本身叫做rule .
這算是概念上的區塊,沒有什麼特殊之處
唯,如果想要開一個新的declaration
就要在rule上用滑鼠點兩下
第二種:
> [...]
[ ]這樣叫做shed.
shed內部就是epigram中唯一可以edit之處
當一段text是被包含在shed中時,這段text就可以被修改
而且,在結束這塊shed之前,這裡面的內容都不會被typecheck
結束shed的方法是:按鍵盤上的Esc按鍵
第三種:
> (...)
( )叫做一個group.
因為epigram中,line指的是一行的declaration
而不是指一般editor中的physical line
所以我們就用group來包裹某些跨行的東西
講半天,其實看一個例子馬上就會知道這是什麼了

一開始打開epigram,視窗會顯示:
> -----------------------------
> [ ]
> -----------------------------

我們把游標移到那個shed上
並且鍵入 data 然後按Esc結束這個shed
這時候,epigram會自動generate出一些code:
> -----------------------------
> ( [ ] !
> data !-------! where [ ]
> ! [ ]:[ ] )
> -----------------------------

這一段產生出來的code裡面又出現新的shed
沒錯,這就像是國小的歡樂填空格..
data是一個define data structure的keyword
當你Esc一開始的[data]這個shed時
epigram會知道說你要define某個data structure
所以它會把相對應的格式生產出來
使用者就把對應的空格填好就好
(當然,也是可以乖乖的全部照格式寫完再一次Esc掉整個shed)
(不過這樣你就會發現,epigram真是個有夠難搞的東西..)

事實上,epigram裡面只有三種這樣的declaration keyword
分別是:
data : declare data structure
let : declare fucntion
inspect : declare . . . question(?)
關於這三個的細節,以後有機會再說

先回到剛剛的code上面
這裡先不深究有關epigram這個language撰寫的方式
因為這裡只是初探,目的只是介紹這個environment

到上面的code為止,我們已經知道epigram怎麼輸入code
而,一旦Esc掉的shed,是不能再去edit的
那,如果我們打錯字怎辦??
epigram當然也提供了undo功能 (Alt + Backcpase)
可惜就是,epigram的undo目前還不夠完整
它只能讓你step by step的undo上去
也就是說,如果你發現很久以前的某個東西寫錯了
那你就必需要一路undo回去
然後改好以後,後面的東西都要重新撰寫
(其實,也可以把buffer先save起來,之後再paste回去)

以上,是epigram很悽慘不堪的edit environment
寫半天的東西,要麼儲存呢??又要怎麼讀取呢??
這真是個非常讓人頭大的問題
因為epigram既是一個editor又是一個interpreter
整個存成文字檔也不對
所以,epigram現在是利用xemacs的buffer tool來做這些事
save:
1.我有時候就乾脆直接用File>save *Epigram*這個功能
把整個檔案存成文字檔
2.另一個方法是,新開一個buffer
(就是另外開個空白的檔案,然後再用xemacs去open)
然後切換到那個新的buffer去
接著按 Ctrl+c 再接著按 Ctrl+e
這樣epigram的內容就會copy到新的buffer去
接著只要儲存這個file就好..
(好爛的辦法Orz)
load:
load的方法,就是用file>open指令去開之前存的檔案
(建議用opne in the new frame)
然後,把*Epigram*那個buffer裡的游標,停在你欲寫入的shed上
接著切到剛開的file/buffer視窗上
這時候有兩個選擇:
如果要整個file load過去
就按Ctrl+c + Ctrl+c
如果只要load其中一段,就把那一段選取起來
然後按Ctrl+c + Ctrl+r

[Epigram] Install

Install


[windows cmd:]
1.請先行安裝好xemacs
http://www.xemacs.org/Download/win32/index.html
2.修改system path:refer到xemacs的目錄下
例如,我的長這樣 C:\Program Files\XEmacs\XEmacs-21.4.20\i586-pc-win32
3.至http://www.e-pig.org/ 下載for windows的package
並且在解壓縮以後,根據各人喜好,丟去想丟的位置
*.可以把epigram的目錄位置也放進path中,以方便使用
4.修改epigram1目錄下的epigram.bat
將下面這兩行重新指向正確的目錄位置
set EPIGRAM_ROOT=C:\epigram1\
set XEMACS=C:\"Program Files"\XEmacs\XEmacs-21.4.13\i586-pc-win32\XEmacs.exe
5.run "epigram" in cmd

[windows cygwin:]
1.install xeamcs21 by steup.exe
2.download package (for windows)
3.unzip package
4.modify the "epigram.bat"
5.run "epigram.bat"


[linux ubuntu:]
1.sudo apt-get install xemacs21
2.download package (for linux)
3.unzip package
4.run "epigram"

有關這裡

因為BBS的往前回溯功能實在是開始讓我覺得不好用了
而且BBS不能貼圖..
所以把比較正經的東西和記錄移轉到這裡
jaiyalas是心情藝文區
jaiyalascs是電腦程式區
PTT2那裡就留著當作喇賽區吧 XD