Proxima 乙個面向表示的結構化文件編輯器

2021-06-16 01:07:27 字數 1587 閱讀 7073

tuesday, january 11, 2005

proxima : a presentation-oriented editor for structured documents

一篇

有趣的**

裡曾提到過,在未來,將有大量的應用軟體會基於泛型編輯框架進行定義,就像這個一樣。

proxima

原型(prototype

)是在haskell

下編寫並使用

wxhaskell

建立gui

。它將乙個幻燈片編輯器、乙個棋盤(

chess board

)、乙個公式編輯器和乙個

haskell

原始碼編輯器整合到乙個單獨的多功能編輯器中,以此證明其靈活性。

可真正有意思的,是它很像我一直在這講到的

gui約束維護之類的東西,因為它需要處理乙個資料

(這裡原文用到

」fact」

一詞,推測其為」資料

」之意。

-譯者注)

的不同版本以及變更為一種資料型別的可能性,而這種資料型別可能不會立即具備可譯性而變為其他資料型別。

當然,他們在說到這時並沒有談及這些。他們在談論「標準(

level

)」,是總體上符合其文字或繪畫格式、

ast和注釋語義

ast的乙個文件的交替格式。每個標準可能會變更,而這種變更不能與其它標準合成到一起。比如可能是因為你錄入時所寫的東西並不符合語法規範。系統使用各種宣告性的微型語言來表示標準間的轉變,使得建立乙個新的編輯器一般都要求對每個相關轉換語言指定其樣式表的型別。

我沒有深入研究過這個,主要因為它與

haskell

聯絡太緊密了(基於

haskell

的),包括轉換語言。所以我打算學一點

haskell

,以便理解他們到底在做什麼。總之,它已經讓我思考很多東西了,比如怎樣在

gui中實現乙個「選擇」的功能,我常常在

peak

郵件列表上講有關基於泛型函式

gui框架,在這一方面這個問題就顯得有點價值。

似乎他們的原型現在對於較大的文件沒有用武之地。很明顯,當前的實現使用了非增量屬性語法,這意味著即使一些很小的改變也能引發內部結構大範圍的重新計算。當然,這是在我所試圖設計的東西中所要避免的。更確切地講,我對被稱作宣告性**的「自動劃分」比較好奇,它將諸如約束或轉換的宣告性概念轉變為事件驅動**,使得資料庫發生變化時派生(

derived

)資料也隨之變化。

proxima

具有一些前面提到的特性,但更有意思的額外約束是它必須支援雙向性。也就是說,並沒有真正固定的「基準」和「派生」,任何你更改的資料都是「基準」,而其它資料就是「派生」的!在基於資料(

fact-based

)的系統上我想試著在一定程度上實現這種思想,在任何乙個資料型別之間含有一對一對應關係的地方,即使是出現「特別狀態」的時候。(「特別狀態」是

proxima

的術語,用於只能使用一種表達方式的資料,類似不在

ast中出現的文字注釋或不顯示的型別資訊)

設計乙個表示座標點的類

package zuobiao.cn 寫乙個表示座標的類 設計思路 接收兩個引數 橫座標,縱座標,由於表示的型別有三種 int float string 要想乙個類接收三種資料型別,只能使用 object,因為object類可以接收任何型別的資料 設計座標 類 point class point p...

用乙個 int 表示 IP位址

用乙個 int 表示 ip位址。這還是08年初,面試華為時被問到的,當時也回答上來了。不過,最終 hr 也沒要我就是了 public class ip2integer else system.out.println iipv4 sb.tostring return sb.tostring conve...

物件導向的乙個基本理解

物件導向的思維方式是一種更符合人類思考的思想 面向過程思維方式中更多的體現的是一種執行者 自己做一些事情 而物件導向的思維方式更多是體現一種指揮者 物件導向把問題簡單化 舉乙個簡單的例子 把大象裝冰箱裡為例子。上面的例子大象裝到冰箱裡 你得先思考大象裝到冰箱裡 是不是得需要乙個 冰箱 所以你得需要乙...