language-implementation

    5熱度

    1回答

    我正在使用python來實現另一種名爲'foo'的編程語言。所有foo的代碼都將被轉換爲python,並且也會在同一個python解釋器中運行,所以它將JIT轉換爲python。 這裏是一小片的Foo的代碼: function bar(arg1, arg2) { while (arg1 > arg2) { arg2 += 5; } return arg2

    1熱度

    3回答

    我試圖瞭解命令式和功能式語言之間的區別。 此外,我想了解關閉和垃圾收集器如何實施。所以我決定嘗試實現一種功能語言的解釋器。 因爲我不熟悉函數式語言,所以設計一個函數式語言太困難了。是否有關於簡單函數式語言的語法和語義的一些資源?如何做到這一點的教程將是非常有用的。

    2熱度

    3回答

    希望這不是重複的。 在此之前,我知道ArrayList並不是最好的選擇,但這只是好奇心。 簡單地說,我想知道ArrayList的實現。我看了看,發現它使用數組進行存儲。 對於數組,當你有: int [] arr; ARR指向數組的第一個元素,因爲它的類型是整數,編譯器知道在哪裏跳: arr[2] => arr value + 2 * typeof(int) = address of arr[2

    14熱度

    1回答

    這裏是vector Clojure的定義: (defn vector "Creates a new vector containing the args." {:added "1.0" :static true} ([] []) ([a] [a]) ([a b] [a b]) ([a b c] [a b c]) ([a

    1熱度

    2回答

    我發現特殊形式不能作爲參數傳遞或保存在變量中,無論是用Clojure: user=> (defn my-func [op] (op 1 2 3)) #'user/my-func user=> (my-func +) 6 user=> (my-func if) java.lang.Exception: Unable to resolve symbol: if in

    0熱度

    1回答

    爲了在.NET中變得更好,我發現查看.Net框架本身以及Microsoft如何實現所有好的功能很有幫助。上次我使用我的反編譯器查看System.String-Class的實現時,研究了String-Object如何存儲其實際字符串。我對自己班裏最大的班級感到驚訝,並且我無法清楚地確定實際班級保存的班級的哪一部分。 以下是示出的開始和類的端部的反編譯兩個截圖: 我假定[System.Reflecti

    3熱度

    2回答

    按照docs: inspect.currentframe() 返回的調用者的堆棧 幀的幀的對象。 CPython實現細節:此函數依賴於Python棧 解釋器中的幀支持,並不保證所有Python實現都存在於 中。如果在沒有實現的Python 棧幀支持運行此函數返回無。 它只是將這個函數標記爲「依賴於實現」嗎?如果此功能不起作用,會不會有類似的功能,如inspect.trace,inspect.sta

    5熱度

    1回答

    這些都是V8 C++ API來創建新的原語功能: Handle<Boolean> v8::Boolean::New(bool value) Local<Number> v8::Number::New(double value) Local<String> v8::String::New(const char *data, int length=-1) 我不知道爲什麼Boolean返回Han

    2熱度

    1回答

    在2000 interview(即預YARV),馬茨說馬茨 :我想,使其更快,更穩定。我正計劃完整的 重寫代碼爲「Rite」的Ruby 2.0解釋器。這將是更小,更容易嵌入,線程安全和更快的 。它將使用一個 字節碼引擎。這可能需要幾年才能實現,因爲 我很忙,只是維護當前版本。 在這種情況下,「線程安全」是什麼意思?一個允許你使用綠色線程的解釋器?一個允許你使用本地線程的解釋器?一個沒有全局解釋器鎖

    3熱度

    1回答

    我想知道爲什麼PriorityQueue in Java的默認大小是11。我擡頭看看implementation,這讓我感到更加困惑。 優先級隊列實現爲堆。其容量使用此功能進行調整: /** * Increases the capacity of the array. * * @param minCapacity the desired minimum capacity */ priva