{"size": 4167, "ext": "scrbl", "max_stars_repo_path": "index.scrbl", "max_stars_repo_name": "CYBAI/racket-tw.github.io", "max_stars_repo_stars_event_min_datetime": null, "max_stars_repo_stars_event_max_datetime": null, "max_issues_repo_path": "index.scrbl", "max_issues_repo_name": "CYBAI/racket-tw.github.io", "max_issues_repo_issues_event_min_datetime": null, "max_issues_repo_issues_event_max_datetime": null, "max_forks_repo_path": "index.scrbl", "max_forks_repo_name": "CYBAI/racket-tw.github.io", "max_forks_repo_forks_event_min_datetime": null, "max_forks_repo_forks_event_max_datetime": null}
{"max_stars_count": null, "max_issues_count": null, "max_forks_count": null, "avg_line_length": 42.9587628866, "max_line_length": 467, "alphanum_fraction": 0.7321814255}
#lang scribble/manual

@title{Racket Taiwan}
@author[(author+email "Lîm Tsú-thuàn" "racket@racket.tw")]

嗨，這裡是 racket.tw，目標是在台灣推廣 racket 這個大家應該不怎麼熟悉的程式語言。

@section{源頭}

racket 源於 PLT Scheme 這個專案，至今也仍與 scheme 互相影響，某種程度上說他們是同一個語言也還行 XD。

@section{教學}

目前的組織方式是分成讓從其他語言過來的人快速掌握 racket 開發方式的快速導覽路線，以及給完全的程式入門者的教學路線，最後合流到進階學習給想了解各種無謂細節的學習者 :p。

@itemlist[
  @item{@hyperlink["./tutorial/entry/index.html"]{程式入門者}
        以還不會寫程式的讀者為目標}
  @item{@hyperlink["./tutorial/quick/index.html"]{快速導覽}
        已經會寫其他程式語言可以從這裡開始}
  @item{@hyperlink["./tutorial/advanced/index.html"]{進階學習者}
        想要進一步了解 racket 無所謂的細節的人可以看這裡 :p}
  ]

@subsection{其他學習資訊}

@subsubsection{書籍}

@itemlist[
  @item{@hyperlink["https://mitpress.mit.edu/books/software-design-flexibility"]{Software Design for Flexibility: How to Avoid Programming Yourself into a Corner}}
  @item{@hyperlink["https://mitpress.mit.edu/sites/default/files/sicp/index.html"]{Structure and Interpretation of Computer Programs(SICP)}}
  @item{@hyperlink["https://mitpress.mit.edu/books/little-schemer-fourth-edition"]{The Little Schemer}}
  @item{@hyperlink["https://nostarch.com/realmofracket.htm"]{Realm of Racket}}
  @item{@hyperlink["https://nostarch.com/racket-programming-fun-way"]{Racket Programming the Fun Way}}
  ]

@section{Blog}

@itemlist[
  @item{@hyperlink["./post/2021-08-09-gui-easy.html"]{2021/08/09 gui easy}}
  @item{@hyperlink["./post/2021-06-10-metapict.html"]{2021/06/10 metapict}}
  @item{@hyperlink["./post/2021-04-10-llvm.html"]{2021/04/10 [Scheme] 安裝 Racket-llvm}}
  @item{@hyperlink["./post/2021-03-22-syntax-rules.html"]{2021/03/22 [Scheme] define-syntax 佮 syntax-rules 的使用例}}
  @item{@hyperlink["./post/2021-03-13-lazy-compute.html"]{2021/03/13 lazy compute}}
  @item{@hyperlink["./post/2020-12-26-frontend-to-nanopass.html"]{2020/12/26 從 frontend(compiler) 到 nanopass}}
  @item{@hyperlink["./post/2020-12-18-simple-type-check-with-nanopass.html"]{2020/12/18 用 nanopass 做簡單的類型檢查}}
  @item{@hyperlink["./post/2020-11-20-riposte.html"]{2020/11/20 Riposte}}
  @item{@hyperlink["./post/2020-11-15-raco-run.html"]{2020/11/15 raco-run}}
  @item{@hyperlink["./post/2020-10-22-pattern-matching-value.html"]{2020/10/22 Pattern matching value}}
  @item{@hyperlink["./post/2020-10-15-semilit.html"]{2020/10/15 semilit}}
  @item{@hyperlink["./post/2020-10-07-from-template.html"]{2020/10/07 from-template}}
  ]

@section{Q&A}

@subsection{如何安裝}

到 @hyperlink["https://download.racket-lang.org/"]{https://download.racket-lang.org/} 這個頁面可以下載官方發布的 Racket。作業系統的選擇不必多言，但 Distribution 是否選擇 Minimal Racket 則需要視情況而定，如果你需要包含 DrRacket 等內建開發軟體，則最好不要選擇 Minimal 的發行版(選擇這個方式之後也可以另外安裝 DrRacket，所以不須過多的擔心)，但如果只是在部署機器或是 CI 執行的話，那 Minimal Racket 便足夠了。最後則是 Variant 的選擇，BC 指 Before CS，而 CS 則指 Racket on Chez Scheme 的版本，CS 在 Racket 8.0 成為預設版本。不過遇到問題的話不仿也試試 BC，用 @hyperlink["https://nixos.org/download.html"]{nix} 可以寫出快速切換不同環境的 script。

@subsection{開發環境}

編輯器推薦直接用 DrRacket 就好，但也有其他選擇如

@itemlist[
  @item{@hyperlink["https://marketplace.visualstudio.com/items?itemName=evzen-wybitul.magic-racket"]{VSCode Plugin: Magic Racket}}
  @item{@hyperlink["https://github.com/greghendershott/racket-mode"]{Emacs: racket-mode}}
  @item{@hyperlink["https://github.com/wlangstroth/vim-racket"]{Vim: vim-racket}}
  ]

但我認為整體來看還是 DrRacket 最為完整，也可以試試看 racket.tw 開發的 @hyperlink["https://github.com/racket-tw/sauron"]{sauron}。

@section{專案}

@itemlist[
  @item{@hyperlink["https://github.com/racket-tw/sauron"]{sauron}：A Racket IDE}
  @item{@hyperlink["https://github.com/racket-tw/k"]{k}：一個實驗中的定理證明器}
  @item{@hyperlink["https://github.com/racket-tw/reporter"]{reporter}：compiler 用的錯誤報告的 pretty printer/collector}
  @item{@hyperlink["https://github.com/racket-tw/cc"]{cc}：用 racket 寫的 c to x86/64 compiler}
  ]

@section{其他資源}

@itemlist[
  @item{@hyperlink["https://racket-lang.org/"]{官網}}
  @item{@hyperlink["https://docs.racket-lang.org/"]{Racket 官方文件}
        這裡的搜尋也可以搜到第三方程式庫}
  @item{@hyperlink["https://pkgs.racket-lang.org/"]{Racket 程式庫}
        這是發布第三方程式庫的標準管道}
  @item{@hyperlink["https://try-racket.defn.io/"]{線上運行環境}}
  ]

@subsection{線上題庫}

@itemlist[
  @item{@hyperlink["https://exercism.io/tracks/racket"]{exercism: Racket}}
  ]
