關於Operator 0.1.7
您喜歡Javascript,函數式編程和Android嗎?嘗試操作員!
一個簡單的Javascript編譯器程序,以類似於另一種著名的功能編程語言(以H開頭)的功能語言進行編碼。
每種翻譯都可以通過單個JavaScript腳本集成到您的網頁中,前提是您還安裝了jqMath(http://mathscribe.com/author/jqmath.html)(使用jQuery)和Numeric Javascript(http:// www) .numericjs.com)。
與H.類似
*具有功能
*有點冗長
*了解二進制操作的中綴符號
與H.不同,運算符
*本質上不是懶惰的,但是可以實現無限的結構(列表,樹...)
*未輸入
*不了解使用二進制運算符的部分(如果要(+1),則必須(\ x-> x + 1)),但否則會理解部分
*沒有大小寫區分
*對二進制操作不承擔任何優先權
*不會將'(簡單引號)視為有效的語法符號
*尚處於初期
關於純度,Operator大部分時間都使用不可變的變量和結構,但是偶爾(在interact關鍵字之後)可以修改某些狀態(例如,HTML文檔的內容,請參見Demos)。
原始內置插件:
從字面上僅保留javascript中的+,-,*,/,%,==,<,>,子字符串,長度,它們與javascript中的含義相同(例如+是多態的)。現在,它們被視為2個參數的函數(一元長度和三進制子字符串除外)。
get方法已成為!功能
例如:var val = obj ['black'] + xs [0];變成val =(obj!“ black”)+(xs!0)
javascript數組稱為運算符中的列表
例如:var xs = [1,2];變成xs =列表()1 2()
一個javascript對象稱為Operator中的Map
例如:var obj = {'red':0,'black':1};變成obj = Map()“ red” 0“ black” 1()
這些被設計為不可變的,並且作為函數,以下內容是有效的:
求=清單()1 2 3
下一個=求4 5
xs =下6個()
,最後一個()給出結構的結尾(第一個創建新實例)。然後,對於處理xs和ys的(不可確定的)順序定義ys = next 7()會很魯ck,將影響xs!5的結果(相應地可以給出6或7)。而是定義一個新的不可變列表:ys = List()1 2 3 4 5 7()
還提供了幾種有用的文檔處理功能:
:=,:: =,換行符,值,數學,輸入,按鈕,交互(請參見演示)
還提供了幾種有用的常規功能:
hex2char,dec2hex,hex2dec
可以通過javascript關鍵字訪問其他javascript組件(請參見下文)。
這就是原始內置函數的全部!
外部內置:
國外JAVASCRIPT:
運算符只知道很少的原始關鍵字和運算符集,但是可以使用javascript關鍵字訪問所有javascript函數。例如:
sqrt x = javascript((“ Math.sqrt(” + x)+“)”)
或更好,
sqrt = javascript“ var fun = function(x){return Math.sqrt(x);};樂趣”
或簡單地
sqrt = javascript“ Math.sqrt”
國外JQMATH:
如果計算結果滿足jqMath格式(http://mathscribe.com/author/jqmath.html),它將顯示為數學公式。例如
main =“ $ 355/113 $”
如果您安裝了腳本(由“發送javascript”菜單發送)和jqMath腳本,它將在屏幕上以及您的網頁上顯示出一個漂亮的分數。
國外NUMERIC JAVASCRIPT:
可以使用所有numericjs函數(http://www.numericjs.com)。例如
m =列表()第1行第2行()
row1 =列表()2 5()
row2 =列表()6 3()
行列式= javascript“ numeric.det”
main =行列式m
將返回-24。請注意,對於2個或更多變量的數字函數的定義,沒有捷徑(如上面的sqrt)。例如,上面的前四行和
main =行列式(乘積m m)
你應該定義
product = javascript“ var fun = function(x){return function(y){return numeric.dot(x,y);};}; fun”)
為了得到576。