μ°λ¦¬λ REPLμ μ»΄ν¬λνΈννλ κ²μ λν΄ μ¬λ¬ λ² μ΄μΌκΈ°νμ΅λλ€. μ΄λ¬ν ν΅μ¬ κ΅¬μ± μμλ₯Ό νΈμ€ν νκΈ° μν΄ λ€λ₯Έ μ μ₯μλ₯Ό λ§λ€κΉ μκ°νκ³ μμ΅λλ€. κ·Έλ¬λ μ°λ¦¬κ° μ΄λ―Έ μ¬κΈ°μμ FCS+Fable JS μ»΄νμΌμ μμ±νκ³ μκ³ λ€λ₯Έ ν¨ν€μ§(fable-compiler-jsμ λν λ©νλ°μ΄ν° μ΄μ λΈλ¦¬μ κ°μ)μ λν μΌλΆ λΆλΆμ΄ νμνλ€λ μ μ κ°μν λ μ¬κΈ°μμ κ΅¬μ± μμλ₯Ό μμ±νκ³ λ€λ₯Έ μ μ₯μμμ κ°μ Έμ€λ κ²μ΄ λ κ°λ¨ν μ μμ΅λλ€. .
κ·Έλμ μμ΄λμ΄λ μ¬κΈ°μ λ£λ κ²μ λλ€:
fable-compiler/replμ μ΄λ¬ν κ΅¬μ± μμλ₯Ό κ°μ Έμμ λλ¨Έμ§ UIμ λμμ μ 곡ν΄μΌ ν©λλ€. λν REPLμ ν¬ν¨νλ λ€λ₯Έ μ¬μ΄νΈ(μ: κ²°κ³Ό νκ°κ° ν¬ν¨λ Markdown F# μμ΅μ λ§λ€κΈ°)μ κΈ°λ°μ΄ λ©λλ€.
μΈνλΌλ₯Ό λ§λλ κ²μ΄ λ무 볡μ‘νμ§ μμμΌ νμ§λ§ μ½κ°μ μμ μ΄ νμν©λλ€. λͺ¨λ μ‘°κ°μ ν¨κ» λ§μΆλ λ°©λ²μ μλ μ¬λμ μλ§λ (μ μΌν?) μ¬λμ΄λ―λ‘ λ€μ μ£Όμ μμνλ €κ³ ν©λλ€. ;)
cc @ncave @MangelMaxime @whitetigle @tpetricek
ν λ‘ μ @Krzysztof-Cieslakμ μΆκ°νκ³ μμ΅λλ€.
F# μ½λμ© Monaco νΈμ§κΈ°μ React κ΅¬μ± μμμ λλ€.
μ΄κ²λ κ΄μ¬μ΄ μμν
λ° AST λ·°μ΄ μμ Monacoκ° μλνλλ‘ λ§μ μ½λλ₯Ό νμ³€μ΅λλ€ π
. Fable.Import.Monaco
μ’
λ₯μ κ²μ κ°λ κ²μ΄ λ ν©λ¦¬μ μΈμ§ κΆκΈν©λλ€.
μ€λΉλλ©΄ μ μκ² νμ μ£ΌμΈμ. F# μ¬μ©μκ° λνν μ½λ μ‘°κ°μΌλ‘ λΈλ‘κ·Έ κ²μλ¬Όκ³Ό μμ΅μλ₯Ό μμ±ν μ μλλ‘ Fableμ Klipse μ ν΅ν©νκ³ μΆμ΅λλ€.
μλ£λμμ΅λλ€ :) μ΄μ Fableλ‘ F# νλ‘μ νΈλ₯Ό μ»΄νμΌνλ λ° νμν μ΄μ
λΈλ¦¬λ₯Ό fable-metadata
npm ν¨ν€μ§μμ μ¬μ©ν μ μμΌλ©°, JSλ‘ μ»΄νμΌλ FCS + Fableμ μΉ μμ
μμ ν¨κ» fable-standalone
λ‘ λ°°μ‘λ©λλ€. μΉμ¬μ΄νΈμ μ½μ
ν μ μμ΅λλ€.
Fable REPLμ μ΄λ―Έ μ΄λ¬ν ν¨ν€μ§μ μμ‘΄νκ³ μμ΅λλ€. μ§μΉ¨μ λλ΅ λ€μκ³Ό κ°μ΅λλ€.
fable-metadata/lib
λ° fable-standalone/dist
λΉμ μ΄ λΉμ μ μ μ νμΌμ μ 곡νκ³ μ΄λλ μ§ : μFable.Standalone
λ° Fable.WebWorker
λ€μμ€νμ΄μ€).fable-standalone/src/Interfaces.fs
fable-Standalone/src/Worker/Shared.fs
λͺ κ°μ§ μ 보(κ°μ₯ μ€μν κ²μ λ©νλ°μ΄ν° μ΄μ λΈλ¦¬λ₯Ό μ°Ύμ μ μλ μμΉ)λ‘ μΉ μμ μ λ₯Ό
src/App/Main.fs νμΌμ νμΈνκ³ μμ μ λ©μμ§λ₯Ό λ³΄κ³ μμ μμ μνΈ μμ©νλ λ°©λ²μ μμ보μΈμ.
@alfonsogarciacaro μ΄κ²μ
μ¬λ¬λΆμ λ©μ§ μν π
@ncave κ·Όλ° νΈμν° κ³μ μ΄ μμ±λ μ½λ λ₯Ό
@alfonsogarciacaro λ¬Όλ‘
λλ λ¨μ§ λλ΄μ΄μκ³ μ΄λ―Έ μκ³ μΆμ μ¬λμ GitHubμμ λΉμ μ νλ‘μ°νλ κ²μ μκ³ μμ΅λλ€.
λ€μ λ¨κ³ -> λ¬λ‘! (REPLμ F# νλ‘μ νΈ, ννΈ ννΈ νκΏμΉ μ½ ;)
λλμ F λ²νΈ μ§μ μΆμ΄μ Klipseμ Klipse μ§μ κ°μ λ°©λ²μΌλ‘ (JS μ½λ νκ°λ₯Ό μν΄ νλ¬κ·ΈμΈ) LISP , Clojureμ μ λ£¨λΉ .
μ΄λ₯Ό μν΄μλ λ€μκ³Ό κ°μ κ°λ¨ν μ§μΉ¨μ΄ νμν©λλ€.
@viebel μ΄λ₯Ό λ¬μ±νκΈ° μν μ§μΉ¨μ μμ μ£Όμμ μμ΅λλ€ . eval ν¨μ(κ·Έλ¦¬κ³ μλ§λ μ²μμλ init ν¨μ)λ₯Ό νΈμΆνλλ‘ μ€μΌ μ μλλ‘ λμλ릴 μ μμ§λ§ μ»΄νμΌλ¬κ° λ‘λ λλ μ»΄νμΌλλ λμ Klipse UIκ° μ μ§λκΈ° λλ¬Έμ μΉ μμ μκ° μμΌλ©΄ μ¬μ©μ κ²½νμ΄ μ’μ§ μμ κ²μ΄λΌλ μ μ μ μνμμμ€.
@alfonsogarciacaro 짧μ μ½λ μ‘°κ°μ λν΄ 300msec λ―Έλ§μ΄ κ±Έλ¦°λ€κ³ κ°μ νλ©΄ μ»΄νμΌ μ€ Klipse UIκ° μ μ§λλ κ²μ λν΄ ν¬κ² κ±±μ νμ§ μμ΅λλ€.
init + eval ν¨μ νΈμΆμ λν μ§μΉ¨μ μ€μ΄λ λ° λμμ μ£ΌμΈμ.
νμ¬ REPLμ 리μμ€λ₯Ό ν λΉνμ§ μμΌλ―λ‘ μ’ λ£ν©λλ€.
κ°μ₯ μ μ©ν λκΈ
@alfonsogarciacaro λ¬Όλ‘
λλ λ¨μ§ λλ΄μ΄μκ³ μ΄λ―Έ μκ³ μΆμ μ¬λμ GitHubμμ λΉμ μ νλ‘μ°νλ κ²μ μκ³ μμ΅λλ€.
λ€μ λ¨κ³ -> λ¬λ‘! (REPLμ F# νλ‘μ νΈ, ννΈ ννΈ νκΏμΉ μ½ ;)