再帰
先日からLand of Lispを読み進めている。目的は再帰とlambdaの理解なのだけど最初に出てきた再帰の式だけでも???が浮かんで前に進まない。
というわけで、わからないことはGoogle先生に聴くとこにした。
その中でも理解できそうなページは以下のもの。
7. 繰り返し
1. 初めに
今回は繰り返しについて説明します。繰り返しができれば、一通りプログラムを書くことができます。 繰り返しのための構文 do もありますが、一般に、Scheme は繰り返しのために再帰を使います。
2. 再帰再帰関数とは関数定義の中で自分自身を呼び出す関数です。 慣れないと奇妙な感じがしますが、慣れてしまえば、気にならなくなります。
https://www.shido.info/lisp/idx_scm.html もう一つのScheme入門(紫藤貴文さん)
https://www.shido.info/lisp/scheme7.html 7.繰り返し
再帰関数(初級) - 八発白中 (深町英太郎さん)
再帰関数(上級) - 八発白中 こちらには末尾再帰の例が載っている。
紫藤さんのページも平行して読んでいたのだけどそこまでは進んでいないし、深町さんのページもいつも検索には引っかかるのだけど読んでおらず、改めて本気で読まないと頭に入らないなあと。ただし、Land of Lispの例文にある (1+ hoge hoge)の(1+)の返り値はどこに溜め込むのは理解できてない。形としては、アンチョコとして使えるとは思うのだけど、他人には説明できないなあ。
アンチョコということでは、
lispの再帰関数,関数作成の練習 - Set::prototype
には数十もの再帰の例が載っていた。
さて、Land of Lispの訳者で役者(
川合史朗@Gaucheは、ハワイで俳優をしている|【Tech総研】
)の川合史郎さんのサイト
http://practical-scheme.net/index-j.html
)には、「なんでも再帰」(
http://practical-scheme.net/docs/tailcall-j.html
)というページでCのforとSchemeの再帰の比較をしている。これもまあ、全く理解できない。いつかわかる日が来るのだろうか?
それとPaul Graham氏の記事の翻訳が多数。
org-mode
org-modeとは
Org-mode は、ノートの保存、TODOリストの管理、プロジェクト計画のためのモードです。高速で効率的なプレーンテキストのシステムを使ってファイルを編集します。
Org mode for Emacs: あなたの生活をプレーンテキストで
Org-modeはCarsten Dominik氏が作成したEmacsのOutline-modeを大幅に拡張したアウトライナーのLisp(マクロ)である。Org=organizerという名のとおり、アウトライナーの域を超えて、プロジェクトやTODOを管理したり、スケジュールを組んだりするオーガナイザーである。
Org-modeとは,Emacs上で動く ノート/タスク管理/プロジェクト管理/執筆 管理ツールです.
本サイトは,org-modeの情報を日本語で発信していく非公式サイトです.
このドキュメントは、Emacs と Org-mode を使って HTML 文書を作成するのに必要な最低限のノウハウをまとめたものです。
Org-mode を使えば、簡単に、整った HTML 文書を書くことができます。 HTML の知識はほとんど必要ありません。 (知識があれば、さらに高度なことをすることもできます。) Org-mode 自体の知識もほとんど必要ありせん。 Org-mode の記法の知識は多少必要ですが、 HTML を直接エディタで編集するよりはずっと楽です。 何せ、Org-mode 用のソースファイルは、それ自体をテキスト文書として他人に読んでもらうことができるくらいです。 (読み手が Emacs を使っていればなおさら。)
EmacsのOrg-modeでGTDを実践しているCharles Cave 氏のサイトにある一連のOrg-modeの活用方法のうち、「How I use Emacs and Org-mode to implement GTD(GTDを実践するためにどのようにEmacsとOrg-modeを使っているか)」を翻訳してみました。英語が得意なわけではないので、よくわからないところありますし、誤訳もあると思いますが、Org-modeの使い方がわかればと思います。
OrgMode/Org-modeでGTD実践(翻訳) - How I use Emacs and Org-mode to implement GTDの翻訳
どうして org-mode なのかというと、先日来読んでいるSchemeのチューターに「org-modeで作成されました」みたいなことが載っていてしかもきれいに整形されていたってのが大きい。きれいなhtmlが吐けると、Google-chromeのようなものでpdfを作ってもそれなりに印刷に使えることがわかって嬉しかった。これから、作成する文書もこういうツールで整形できると楽なんじゃないかなと。
AutoLISPの編集環境はEmacs
Emacsは無料で入手できる上に、マニュアルやカスタマイズの情報が豊富なのがいいんだけど、最初の一歩がものすごく敷居が高いせいでサンデーなというか平日はCADオペレータとして生活しているヒトには習得が難しいのかもしれない。
今日は久しぶりに仕事場の作業環境を整えようとして結局できなかった。自宅と同じ環境を構築しようとしたのだけれど、どこのサイトを参照していていたのかわからず、迷っているだけで何もできなかった。
で、帰宅してから確認したのは、init.dの中身とサイト。
http://qiita.com/catatsuy/
結局ココのサイトの環境そのままだった。auto-complete してくれるし、色は勝手につくし、いい時代になったなあ。
auto complete mode
Auto Complete Mode(通称、auto-complete.el, auto-complete-mode)はGNU Emacs(以下Emacs)の補完システムを自動化・高度化する拡張です。従来の補完システムと比べて以下の点で優れています。
- 視覚的な操作感
- 統計的手法による補完オーバーヘッドの削減
- 拡張性
本マニュアルはインストール方法から基本的な使い方・設定方法、また拡張方法までを網羅しています。不明な点があれば開発者まで連絡をください。
AutoLISP の参考書・サイト
AutoLISP の参考書・サイト
Amazon.co.jp: すぐに使えて役に立つ!AutoLISP with Dialog: 中森 隆道: 本
AutoCAD ユーザ向け。AutoLISP初心者にわかるよう段階を踏んでAutoLISPを学べる。DCLに関しては和書では唯一の解説書。(2014時点ではDCLには手を付けていないので内容は不明、悪しからず)2012年6月発行
Amazon.co.jp: AutoLISPの初歩―AutoCADを使いこなすために: 岡島 正夫: 本
AutoCAD ユーザ、プログラミング経験者向け。LISP の解説から入る由緒正しき LISP の教科書。200ページ中60ページを費やし LISP の基本的な構造を解説するため、冒頭の60ページはプログラミングができない人には難読。ただし、わかってくると染みてくる。A5サイズで持ち歩きやすい。 2001年3月発行
AutoLISP入門講座 (OffshoreCAD & Management Inc.)
林 秀生氏によるAutoLISP実践講座。テキストエディタの選定や使い方からなので一見初心者向けかと思いきや簡潔な記述のため、初心者がついていくのは難しい。写経レベルは脱した人向け。バグ取りや開発方法、DCLの解説もある。
AutoCAD と ICAD の開発に関するテキスト。その他のLISP関連の情報も(これが重要)。
□□autocad report□□ □□Lisp□□ ( 新Lisp作り方こーざ)
全くの初心者向け、プログラミング経験のないひと向け。とにかくプログラミングも AutoLISP もわからないけど手は動く人向けのチュートリアル。行きつ戻りつ、必要な機能を追加していく。
自分に最も合っていたサイトは □□Lisp□□ ( 新Lisp作り方こーざ)だった。
何度か AutoLISP に接する機会はあったものの、獲得するまでには至らなかったのだがこのサイトのチューターで獲得することができた。期間は約3週間。最初は読めなかった演習用のLISPも何度か繰り返しているうちに読めるようになった。
チューターにある関数やコマンド等の説明は完全なではないので上記の解説書類は必要。コマンドの機能や変数の中身がどう変わっていくのかを考えることで、AutoLISPを理解できる。チュートリアルは初心者に必要な機能に絞られ、解説にはプログラミングの専門用語を使わないために、何気なく進めてしまう。ここが重要で書籍では諦めていたことが、このサイトのチュートリアルでは諦めることなく完遂できた。
AutoLISPのロード、バグ取り等は
AutoLISP講座【準備編-6】AutoLISPを作る、読ませる、直す、の手順 | 建築図面専門!オフショア・キャドCAD
を参考に。
追記 20190314
Manual Chair Japan - Top page が見つかった。
GizmoLabs は更新している。