Elm (程式語言)

Elm係一隻用喺特定領域嘅程式語言，佢透過聲明式嘅方法創建基於網頁瀏覽器嘅圖形用戶界面。Elm係純函數式嘅，開發者話呢隻語言強調易用性、性能同埋健壯性。佢宣傳佢係「實際上冇運行時間異常」，因為Elm編譯器係用靜態類型檢查嘅。

例子 
下面嘅例子代碼透-- 呢個係一個單{-
呢個係一個多行釋。
係可以 {- 括著佢嘅  -}
-}

-- 呢度係定義叫做greeting嘅一個值。類型畀人推論做String。
greeting =
    "Hello World!"

-- 喺頂層聲明最好加返個類型標。
hello : String
hello =
    "Hi there."

-- 函數用一樣嘅方法聲明，具有跟隨喺函數名字後嘅實際參數。
add x y =
    x + y

-- 再嚟多次，最好加返個類型標。
hypotenuse : Float -> Float -> Float hypotenuse a b =
    sqrt (a^2 + b^2)

-- 函數可以柯里化；呢度我哋柯里化乘法入面綴算符於數2以上。
multiplyBy2 : number -> number
multiplyBy2 =
     (*) 2

-- If表達式可以用喺在Bool值上嘅分支。
absoluteValue : number -> number
absoluteValue number =
    if number < 0 then negate number else number

-- 記錄用嚟持有命名字段。
book : { title : String, author : String, pages : Int }
 book =
     { title = "Steppenwolf"
     , author = "Hesse"
     , pages = 237 
     }

-- 想要訪問記錄嘅話可以加返個 . 。
 title : String
 title =
     book.title

-- 記錄訪問 . 都可以用嚟做一個函數。
 author : String
 author =
     .author book

-- 可以用type關鍵字嚟建立標籤聯合。
 -- 下列值表示一個二叉樹。
 type Tree a
     = Empty
     | Node a (Tree a) (Tree a)

-- 可以用case表達式檢測呢啲類型。
 depth : Tree a -> Int
 depth tree =
     case tree of
         Empty ->
             0

Node value left right ->
             1 + max (depth left) (depth right)

程式語言