想我對整數和雙打堆棧機的代碼,它可以做一些簡單的操作(推不變,加,MUL,DUP,掉期,流行音樂,進行類型轉換)工作。驗證使用虛擬類型在Haskell程序的正確性
現在我正在寫程序都將在其他一些語言的描述,並將其轉換成代碼對於這種疊層機。我也需要計算堆棧的最大尺寸。
我懷疑這是可以使用Haskell的類型檢查,以消除一些錯誤,例如:
- 從空堆棧彈出
- 倍增雙打使用INT乘法
我認爲我可以申報,例如:
dup :: Stack (a :%: b) -> Stack (a :%: b :%: b)
int2double :: Stack (a :%: SInt) -> Stack (a :%: SDouble)
等等。但後來我不知道如何生成代碼和計算堆棧大小。
是否有可能做這樣的嗎?它會是簡單/方便/值得嗎?
你是什麼意思「但是我不知道如何生成代碼和計算堆棧大小。」 – 2011-01-26 14:57:32
我認爲這些類型會使得傳遞結果更難 - 例如,我將能夠編寫`do {pushInt 2; DUP; addInts}`? – mik01aj 2011-01-26 16:09:05