Fable: REPL ꡬ성 μš”μ†Œλ₯Ό 이 μ €μž₯μ†Œλ‘œ 이동

에 λ§Œλ“  2018λ…„ 11μ›” 27일  Β·  12μ½”λ©˜νŠΈ  Β·  좜처: fable-compiler/Fable

μš°λ¦¬λŠ” REPL을 μ»΄ν¬λ„ŒνŠΈν™”ν•˜λŠ” 것에 λŒ€ν•΄ μ—¬λŸ¬ 번 μ΄μ•ΌκΈ°ν–ˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ 핡심 ꡬ성 μš”μ†Œλ₯Ό ν˜ΈμŠ€νŒ…ν•˜κΈ° μœ„ν•΄ λ‹€λ₯Έ μ €μž₯μ†Œλ₯Ό λ§Œλ“€κΉŒ μƒκ°ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μš°λ¦¬κ°€ 이미 μ—¬κΈ°μ—μ„œ FCS+Fable JS μ»΄νŒŒμΌμ„ μƒμ„±ν•˜κ³  있고 λ‹€λ₯Έ νŒ¨ν‚€μ§€(fable-compiler-js에 λŒ€ν•œ 메타데이터 μ–΄μ…ˆλΈ”λ¦¬μ™€ 같은)에 λŒ€ν•œ 일뢀 뢀뢄이 ν•„μš”ν•˜λ‹€λŠ” 점을 κ°μ•ˆν•  λ•Œ μ—¬κΈ°μ—μ„œ ꡬ성 μš”μ†Œλ₯Ό μƒμ„±ν•˜κ³  λ‹€λ₯Έ μ €μž₯μ†Œμ—μ„œ κ°€μ Έμ˜€λŠ” 것이 더 간단할 수 μžˆμŠ΅λ‹ˆλ‹€. .

κ·Έλž˜μ„œ μ•„μ΄λ””μ–΄λŠ” 여기에 λ„£λŠ” κ²ƒμž…λ‹ˆλ‹€:

  • μ»΄νŒŒμΌμ„ μœ„ν•œ λ©”μ‹œμ§€ μˆ˜μ‹ , 툴팁 제곡 등을 ν•  수 μžˆλŠ” REPL μ›Ή μ›Œμ»€
  • μ»΄νŒŒμΌμ„ μœ„ν•΄ μ°Έμ‘°ν•΄μ•Ό ν•˜λŠ” 메타데이터(System.dll λ“±) + Fable.Repl.Lib μ–΄μ…ˆλΈ”λ¦¬(및 미리 컴파일된 JS 파일)
  • F# μ½”λ“œμš© Monaco νŽΈμ§‘κΈ°μ˜ React ꡬ성 μš”μ†Œμž…λ‹ˆλ‹€.

fable-compiler/repl은 μ΄λŸ¬ν•œ ꡬ성 μš”μ†Œλ₯Ό κ°€μ Έμ™€μ„œ λ‚˜λ¨Έμ§€ UI와 λ™μž‘μ„ μ œκ³΅ν•΄μ•Ό ν•©λ‹ˆλ‹€. λ˜ν•œ REPL을 ν¬ν•¨ν•˜λŠ” λ‹€λ₯Έ μ‚¬μ΄νŠΈ(예: κ²°κ³Ό 평가가 ν¬ν•¨λœ Markdown F# μžμŠ΅μ„œ λ§Œλ“€κΈ°)의 기반이 λ©λ‹ˆλ‹€.

인프라λ₯Ό λ§Œλ“œλŠ” 것이 λ„ˆλ¬΄ λ³΅μž‘ν•˜μ§€ μ•Šμ•„μ•Ό ν•˜μ§€λ§Œ μ•½κ°„μ˜ μž‘μ—…μ΄ ν•„μš”ν•©λ‹ˆλ‹€. λͺ¨λ“  쑰각을 ν•¨κ»˜ λ§žμΆ”λŠ” 방법을 μ•„λŠ” μ‚¬λžŒμ€ μ•„λ§ˆλ„ (μœ μΌν•œ?) μ‚¬λžŒμ΄λ―€λ‘œ λ‹€μŒ 주에 μ‹œμž‘ν•˜λ €κ³  ν•©λ‹ˆλ‹€. ;)

cc @ncave @MangelMaxime @whitetigle @tpetricek

enhancement

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

@alfonsogarciacaro λ¬Όλ‘ 
λ‚˜λŠ” 단지 λ†λ‹΄μ΄μ—ˆκ³  이미 μ•Œκ³  싢은 μ‚¬λžŒμ€ GitHubμ—μ„œ 당신을 νŒ”λ‘œμš°ν•˜λŠ” 것을 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€.

λ‹€μŒ 단계 -> λ‹¬λ‘œ! (REPL의 F# ν”„λ‘œμ νŠΈ, 힌트 힌트 νŒ”κΏˆμΉ˜ 잽 ;)

λͺ¨λ“  12 λŒ“κΈ€

토둠에 @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의 와 루비 .

이λ₯Ό μœ„ν•΄μ„œλŠ” λ‹€μŒκ³Ό 같은 κ°„λ‹¨ν•œ 지침이 ν•„μš”ν•©λ‹ˆλ‹€.

  1. λ²ˆλ“€λ‘œ μ œκ³΅λ˜λŠ” 단일 js 파일
  2. 평가 ν•¨μˆ˜μž…λ‹ˆλ‹€.

@viebel 이λ₯Ό λ‹¬μ„±ν•˜κΈ° μœ„ν•œ 지침은 μœ„μ˜ 주석에 μžˆμŠ΅λ‹ˆλ‹€ . eval ν•¨μˆ˜(그리고 μ•„λ§ˆλ„ μ²˜μŒμ—λŠ” init ν•¨μˆ˜)λ₯Ό ν˜ΈμΆœν•˜λ„λ‘ 쀄일 수 μžˆλ„λ‘ λ„μ™€λ“œλ¦΄ 수 μžˆμ§€λ§Œ μ»΄νŒŒμΌλŸ¬κ°€ λ‘œλ“œ λ˜λŠ” μ»΄νŒŒμΌλ˜λŠ” λ™μ•ˆ Klipse UIκ°€ μ •μ§€λ˜κΈ° λ•Œλ¬Έμ— μ›Ή μž‘μ—…μžκ°€ μ—†μœΌλ©΄ μ‚¬μš©μž κ²½ν—˜μ΄ 쒋지 μ•Šμ„ κ²ƒμ΄λΌλŠ” 점에 μœ μ˜ν•˜μ‹­μ‹œμ˜€.

@alfonsogarciacaro 짧은 μ½”λ“œ 쑰각에 λŒ€ν•΄ 300msec 미만이 κ±Έλ¦°λ‹€κ³  κ°€μ •ν•˜λ©΄ 컴파일 쀑 Klipse UIκ°€ μ •μ§€λ˜λŠ” 것에 λŒ€ν•΄ 크게 κ±±μ •ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

init + eval ν•¨μˆ˜ ν˜ΈμΆœμ— λŒ€ν•œ 지침을 μ€„μ΄λŠ” 데 도움을 μ£Όμ„Έμš”.

ν˜„μž¬ REPL에 λ¦¬μ†ŒμŠ€λ₯Ό ν• λ‹Ήν•˜μ§€ μ•ŠμœΌλ―€λ‘œ μ’…λ£Œν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰