REPL
瞭解 Elm 的一個好方法是嘗試在 REPL(Read-Eval-Print Loop)中編寫一些表示式。在 elm-app
資料夾中開啟一個控制檯(你已在初始化和構建階段建立 )並嘗試以下操作:
$ elm repl
---- elm-repl 0.17.1 -----------------------------------------------------------
:help for help, :exit to exit, more at <https://github.com/elm-lang/elm-repl>> 2 + 2
4 : number
> \x -> x
<function> : a -> a
> (\x -> x + x)
<function> : number -> number
> (\x -> x + x) 2
4 : number
>
elm-repl
實際上是一個非常強大的工具。假設你使用以下程式碼在 elm-app
資料夾中建立 Test.elm
檔案:
module Test exposing (..)
a = 1
b = "Hello"
現在,你回到你的 REPL(已經開啟)並輸入:
import Test exposing (..)
> a
1 : number
> b
"Hello" : String
>
更令人印象深刻的是,如果你為 Test.elm
檔案新增新定義,例如
s = """
Hello,
Goodbye.
"""
儲存檔案,再次返回 REPL,無需再次匯入 Test
,新的定義立即可用:
> s
"\nHello,\nGoodbye.\n" : String
>
當你想要編寫跨越多行的表示式時,這非常方便。快速測試剛剛定義的函式也非常有用。將以下內容新增到你的檔案中:
f x =
x + x * x
儲存並返回 REPL:
> f
<function> : number -> number
> f 2
6 : number
> f 4
20 : number
>
每次修改並儲存已匯入的檔案,然後返回 REPL 並嘗試執行任何操作時,將重新編譯完整檔案。因此,它會告訴你程式碼中的任何錯誤。新增這個:
c = 2 ++ 2
試試看:
> 0
-- TYPE MISMATCH -------------------------------------------------- ././Test.elm
The left argument of (++) is causing a type mismatch.
22| 2 ++ 2
^
(++) is expecting the left argument to be a:
appendable
But the left argument is:
number
Hint: Only strings, text, and lists are appendable.
>
總結一下 REPL 的這個介紹,讓我們補充一點,elm-repl
也知道你用 elm package install
安裝的軟體包。例如:
> import Html.App
> Html.App.beginnerProgram
<function>
: { model : a, update : b -> a -> a, view : a -> Html.Html b }
-> Platform.Program Basics.Never
>