* 目次 [#ec3503e0] #contents * Lispを学べるオンライン学習サイト [#vce0b6aa] ** Clojure の日本語ガイド [#zf4be0ab] https://ayato-p.github.io/clojure-beginner/index.html ** ゼロからClojure入門した振り返り 〜勉強したことや感想など〜 [#p854923e] Clojureの学習関連のリンクがまとめられています。 https://qiita.com/Saibaba81/items/16ef2486d2345f7f0e57 ** CommonLisp系 [#pf9181d2] Common Lispは、Clojureとは少し異なるが、そんなに大きく異なるわけではない *** A Road to Common Lisp ほんやく [#c93eafb5] https://gist.github.com/t-cool/b71accaeb270c98c189c622a3b018abf *** 魔法言語 リリカル☆Lisp [#x5b40e3a] 「魔法言語 リリカル☆Lisp」はノベルゲーム風のLispチュートリアルです。 "アリサ"や"すずか"達と楽しくLispを学べます。 全12話構成で各話の最後には練習問題が用意されています。 Lisp処理系にはNScripter上で動作するLispインタプリタであるNScLisperを使用。 別の処理系をインストールする必要はありません!! https://lyrical.bugyo.tk/ ** exercism [#ffec0c9c] たくさんの言語で学べる(英語) https://exercism.org/dashboard * 入門者用のLisp [#j7560679] (英語) https://racket-lang.org/ * paip-lisp [#h0331c39] https://github.com/norvig/paip-lisp Peter Norvig (1992) 著の書籍「Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp」と、そこに含まれるコードのオープンソース リポジトリ * VSCodeでのClojure開発における括弧操作入門 [#b20f3913] Clojure開発において括弧の操作は非常に重要です。VSCodeと適切な拡張機能を使用することで、効率的なコード編集が可能になります。この記事では、基本的な括弧操作から高度な編集テクニックまでを解説します。 ** 前提条件 [#h321ddc3] - VSCodeのインストール - Calva拡張機能のインストール *** calvaのユーザマニュアル [#w6597b5c] https://calva.io/ ** Calva以外の選択肢 [#d5f2bb7f] *** Cursive [#y0bdfa45] https://cursive-ide.com/ IntelliJ IDEA の拡張: Cursive は IntelliJ IDEA の機能を拡張し、Clojure 開発に特化した機能を提供します。 インテリジェントなコード補完: 文脈に応じた高度なコード補完を提供します。 リファクタリング支援: Clojure コードのリファクタリングを安全かつ効率的に行えます。 デバッグ機能: 強力なデバッグ機能を備え、ステップ実行、ブレークポイント設定、変数検査などをサポートします。 シンタックスハイライトとエラーチェック: 正確なシンタックスハイライトとリアルタイムのエラーチェックで、コードの品質を向上させます。 REPL 統合: IDE 内で REPL を使用し、インタラクティブな開発を可能にします。 テスト実行: IDE から直接テストを実行できます。 JVM 上での ClojureScript 開発サポート: ClojureScript の開発もサポートしています。 IntelliJ IDEA を Clojure 開発環境に変えるための専用 IDE プラグインです。 *** CIDER [#xd373e9e] https://cider.mx/ CIDER は Emacs ユーザーにとって、Clojure 開発に欠かせないツールであり、効率的で快適な開発体験を提供します。 Emacs に Clojure 開発機能を統合: CIDER は Emacs を強力な Clojure IDE に変えます。 REPL 中心のワークフロー: REPL (Read-Eval-Print Loop) を中心とした対話的な開発を支援します。 強力なデバッグ機能: ブレークポイント、ステップ実行、変数検査など、高度なデバッグ機能を備えています。 コード補完、シンタックスハイライト、ドキュメント表示: コードの記述を支援する機能が充実しています。 テスト実行: プロジェクト内のテストを簡単に実行し、結果を確認できます。 ミドルウェアによる拡張性: CIDER はミドルウェアによって機能を拡張できます。 *** vim-fireplace [#c48901c2] https://github.com/tpope/vim-fireplace tpope/vim-fireplace は、Vim を強力な Clojure 開発環境に変えるプラグインです。主な機能は以下のとおりです。 REPL (Read-Eval-Print Loop) の統合: Vim から直接 Clojure コードを評価し、対話的にデバッグできます。 名前空間の管理: Clojure の名前空間を簡単に追加、削除、参照できます。 評価: カーソル下の式、選択範囲、またはファイル全体を評価できます。 シンボルの検索と定義: プロジェクト内のシンボルを検索し、その定義にジャンプできます。 CIDER との互換性: Emacs の CIDER と似たような使用感で、Vim を Clojure IDE として利用できます。 ** 基本的な括弧操作 [#d5bc127b] *** 括弧の移動 [#k1cf7003] 最も基本的な操作は括弧間の移動です。以下のショートカットを使用します: - `Ctrl+Alt+Right` / `Ctrl+Alt+Left`: S式の範囲を広げる/狭める - `Alt+Up` / `Alt+Down`: カーソル位置のS式を上下に移動 *** 括弧の選択 [#p18e6148] コードの編集や評価のために、括弧で囲まれた範囲を選択する操作も重要です: - `Ctrl+Shift+→` / `Ctrl+Shift+←`: 現在の括弧内を選択 - `Ctrl+W`: カーソル位置のS式全体を選択 *** 括弧の編集 [#x5a0d94e] コードの構造を変更する基本操作: - `Ctrl+Shift+Enter`: 現在の括弧の後に新しい行を挿入 - `Ctrl+Enter`: 括弧内で改行して整形 ** 高度な括弧操作 [#d181c9e7] *** スラープ(Slurp)とバープ(Barf) [#u9e4d081] これらは括弧の範囲を動的に変更する重要な操作です。 *** スラープ(括弧を広げる) [#c4b6bb28] - `Ctrl+Alt+Right`(Windows/Linux)または `Cmd+Alt+Right`(Mac) - 右にある要素を現在の括弧内に取り込みます ;; Before: (+ 1 2) 3 ;; After Slurp: (+ 1 2 3) *** バープ(括弧から出す) [#w8fabd02] - `Ctrl+Alt+Left`(Windows/Linux)または `Cmd+Alt+Left`(Mac) - 括弧内の最後の要素を外に出します ;; Before: (+ 1 2 3) ;; After Barf: (+ 1 2) 3 *** 実践的な使用例 [#t80bcd88] (defn calculate [x] (let [y (+ x 1)] 2)) ;; yにカーソルを置いてスラープすると: (defn calculate [x] (let [y (+ x 1 2)])) ;; バープで戻すと: (defn calculate [x] (let [y (+ x 1)] 2)) ** Calva拡張機能の追加機能 [#m8a2fad9] *** S式の構造編集 [#w5fa61ab] - `Ctrl+Alt+C Space`: カーソル位置のフォームを評価 - `Alt+(` / `Alt+)`: S式を括弧で囲む/外す - `Ctrl+Alt+C V`: 選択範囲をS式として評価 *** REPL操作 [#n09a74fd] - `Ctrl+Alt+C Enter`: カーソル位置のフォームをREPLで評価 - `Ctrl+Alt+C C`: REPLに接続 ** 効率的な使用のためのTips [#k4a1c983] 1. カーソル位置を意識する - 操作の前に適切な位置にカーソルを合わせることが重要です 2. 段階的な操作を心がける - 複雑な変更は一度に行わず、小さなステップに分けて実行します 3. アンドゥを活用する - 操作を間違えた場合は`Ctrl+Z`ですぐに元に戻せます 4. 括弧の対応を確認する - VSCodeの括弧強調表示機能を活用して、構造の変更を確認します *** The Top 10 Calva Commands [#ea29e1b6] https://calva.io/commands-top10/ *** Finding Calva Commands [#w726c019] https://calva.io/finding-commands/ ** まとめ [#pfc2f2b4] VSCodeでのClojure開発において、括弧操作は基本的なスキルの一つです。これらのショートカットや操作方法を習得することで、より効率的なコーディングが可能になります。日々の練習を通じて、これらの操作を自然に使えるようになることをお勧めします。 インデントを自動でつけたり、括弧の範囲というか位置をショートカットで編集が自由自在になるレベルが必要。 * 毎年のように開かれているclojureの国際会議 [#d25be6ed] Clojure/conj で調べると出てくる ** ClojureTV [#de00ad1a] マニアックな感じしかしない https://www.youtube.com/watch?v=c5QF2HjHLSE&list=PLZdCLR02grLpIQQkyGLgIyt0eHE56aJqd *** 例: Clojure/conj2024 [#qb25c995] https://www.youtube.com/watch?v=Earx_BjvgO0&list=PLZdCLR02grLr4TWUP6qeLxIn4OJLNwKNZ *** 例: Clojure/conj2023 [#v0de0677] https://www.youtube.com/watch?v=c5QF2HjHLSE&list=PLZdCLR02grLpIQQkyGLgIyt0eHE56aJqd ** お絵描き [#z3568468] http://quil.info/ *** Clojureでお絵描き~quilの使い方~ [#i72ab738] http://qiita.com/Haar/items/19f9acbc739cd801233c ** 面白いサイトまとめ [#mb8ce1b8] https://qiita.com/mogamoga1337/items/a8fe542cd16be29dd657 ** C言語に変換できるFerret [#xcea6313] Ferret は、リアルタイム組み込み制御システムで使用するために設計されたフリーソフトウェア Lisp 実装です。Ferret Lisp は、自己完結型のC++11にコンパイルされます。生成されたコードは、 C++11準拠のコンパイラをサポートする任意のオペレーティングシステムおよび/またはマイクロコントローラ間で移植可能です。2KBの RAMしか搭載されていない組み込みシステムから、Linux/Mac OS X/Windows を実行する汎用コンピュータまで、さまざまなアーキテクチャで実行できることが検証されています。 https://github.com/nakkaya/ferret *** Ferret Programmer's Manual [#gbc2ae3d] https://ferret-lang.org/ * いろいろな人のClojureの記事 [#fc4d3047] ** JHipsterに使われている技術スタックと、Clojureの技術スタックを見やすく比較 [#y53982e4] https://github.com/pjagielski/clojure-landscape-from-java?tab=readme-ov-file しかし、この対比だと、フロントエンドは、Angularだけにみえてしまうが、そうなのだろうか? *** re-frame [#ceec743a] Reactだと、以下のフレームワークがエレガントらしい https://github.com/day8/re-frame ** ClojureでRDDとTDDのハイブリッドな開発スタイルを実践しよう [#fd59416a] https://zenn.dev/lagenorhynque/articles/742cf1a0b0a850 ** TDD with RDD: Clojure/LispのREPLで変わる開発体験 [#v441a87a] https://www.docswell.com/s/lagenorhynque/KWWL71-tdd-with-rdd-changed-developer-experience-through-clojure-lisp-repls ** Lispでマルチプレイヤーシューティングゲームを作りました [#j579628f] https://ertu.dev/posts/i-made-an-online-shooter-game-in-lisp/ ** ExcelなどのマクロであるVBAで動作するClojure風なやつ sporklisp [#j8dbd292] https://github.com/joinr/sporklisp ** githubのスターが多いものを言語別にまとめたページ [#s164a858] 見たほうがいい。日本では知名度が低い優れモノがみつかること間違いなし https://github.com/AlexiaChen/awesome-stars?tab=readme-ov-file *** ゲーム開発するときにどれを使うかのフロチャート [#ba3c3da8] https://flexiana.com/2024/05/lisp-game-jam-2024-a-starter-guide-for-clojure-devs *** githubのスターの多いclojureリポジトリ [#uf91d9b7] https://github.com/AlexiaChen/awesome-stars?tab=readme-ov-file#clojure ** C#のClojure CLR実装 [#t4ae3db8] Microsoft の .Net Framework の実行エンジンである Common Language Runtime (CLR) 上の Clojure のネイティブ実装です。 https://github.com/clojure/clojure-clr *** UnityとClojureを統合させる試みのArcadia [#z1c5fa31] https://github.com/arcadia-unity/Arcadia 動画 Arcadia 0.1 Setup https://www.youtube.com/watch?v=KLq9b9lDmkc https://www.youtube.com/watch?v=tBvNIJzlWEI ** javascriptのClojure [#xc8d9360] https://clojurescript.org/ ** Go言語用のClojure風なやつ Glojure [#u8f89d1d] https://github.com/glojurelang/glojure ** Python用のClojure風なやつ basilisp [#y5a9eebf] https://github.com/basilisp-lang/basilisp ** PHP用のClojure風なやつ phel-lang [#eaea0a6d] https://phel-lang.org/ https://github.com/phel-lang/phel-lang ** Lispの方言をLisp1とLisp2に分類してみる話 [#z7a99a36] http://xahlee.info/emacs/emacs/lisp1_vs_lisp2.html ** LISP系言語で実用的なWebアプリも作れるClojureScript [#qdbd58a4] https://news.mynavi.jp/techplus/article/programinglanguageoftheworld-32/ ** Babashkaことはじめ - Clojureでシェルスクリプティングを代替する [#a8eeddc5] https://qiita.com/minebreaker/items/de78a425db81313eeccc ** Fleck [#w06d8488] Bashがどこにあっても動作するClojureのようなLisp https://github.com/chr15m/flk/ https://www.reddit.com/r/Clojure/comments/e2zkvq/a_clojurelike_lisp_that_runs_wherever_bash_is/ ** clojureのよさげなエコシステム [#b191a9e2] https://github.com/razum2um/awesome-clojure