Racketモジュールの簡単な記録を書く
週末の2日間はラッカートでCirru Sepalを運行するprotoと書いてありましたtypehttps://github.com/Cirru/cirrusepal-rkthttps://github.com/Cirru/cirruparser-rkt私には何か楽しく書いた原型があって、それから放っておいたのが欠点です.もう十分でしょう.Sepalプロジェクトの目標はCirru文法で他の言語のIRまたはAST実行を書くことです.CirruはもともとLisp元のプログラミングに啓発されたので、Lispの中で最も面白いことを実現することができて、Lispの中で敷居のドキュメントが最も良くて、敷居も高くないので、Racket.
私はCirruの文法を设计する前にSchemeを学んだことがありますが、似たようなプログラムを书いていません今の话はだんだんimmutableのデータを理解したので、そんなによく知らない感じがします.それに、私はRacketでCoffeeScriptの机能を真似て、复雑な机能は前の文章と同じで、私はモジュール化とパッケージの方面の考え方を整理して、これはとても覚えにくいです...ただの零歳記録で、いざ使ったらすぐに見つけて思い出すことができます
モジュール管理
Racket 0.6は大きなアップグレードを経て、以前使っていたPLaneTはもうお勧めしませんでしたが、互換性があるのではないかと疑っています.ファイル接尾辞が
モジュール
この概念はnpmの中のモジュール名に似ているが、細部は奇妙で、どうせモジュール名には対応していない.モジュールの名前は直接ファイル名のようだ.GitHubからインストールすれば、倉庫名である.一般的にRacketの中の
ダウンロードされたすべてのファイルは、次のようなシステムのディレクトリに統一的に保存されます.
要するに、参照モジュール、参照ファイル、2つのニーズを書くことができますが、モジュールのcollectionはルートディレクトリ
モジュール開発
モジュールを開発する時、モジュール名によってファイルを引用する必要があるかもしれないので、一般的にlinkをします.linkは実際にはインストールディレクトリにコマンドを走って、開発中のモジュールをグローバルにインストールします.
実際には、あるファイルパスにリンクされた情報が記録されています.
モジュール
ファイル間、モジュール間、どのように相互参照するか、上には大体説明したように、ファイルがコードをエクスポートする方法があります.キーワードでタグ付けすればいいので、ドキュメントを見てください.http://docs.racket-lang.org/guide/module-basics.html注意キーワードは奇妙な
最后の
Racketは面白い言語ですが、深く掘ることはないと思います.ドキュメントを調べる必要があります.http://learnxinyminutes.com/docs/racket/http://docs.racket-lang.org/reference/index.html
また、Sepalコアの原理については、
私もただこまごましたことを覚えているだけで、今はRacketを深く学ぶ時間がありません.
私はCirruの文法を设计する前にSchemeを学んだことがありますが、似たようなプログラムを书いていません今の话はだんだんimmutableのデータを理解したので、そんなによく知らない感じがします.それに、私はRacketでCoffeeScriptの机能を真似て、复雑な机能は前の文章と同じで、私はモジュール化とパッケージの方面の考え方を整理して、これはとても覚えにくいです...ただの零歳記録で、いざ使ったらすぐに見つけて思い出すことができます
モジュール管理
Racket 0.6は大きなアップグレードを経て、以前使っていたPLaneTはもうお勧めしませんでしたが、互換性があるのではないかと疑っています.ファイル接尾辞が
.ss
から.rkt
に変わったのもこの時に変更された新しいスキーマモジュールです.Webまたはローカルserveでいいということです.具体的には、ドキュメントを検討して注目してください.コードはGitHubに管理され、コマンドでローカルにインストールできます.http://docs.racket-lang.org/pkg/getting-started.html#%28part._github-d... raco pkg install git://github.com/Cirru/parser-rkt
モジュール
collection
概念この概念はnpmの中のモジュール名に似ているが、細部は奇妙で、どうせモジュール名には対応していない.モジュールの名前は直接ファイル名のようだ.GitHubからインストールすれば、倉庫名である.一般的にRacketの中の
require "dir/sub"
は相対経路を参照しているが、引用符に注意してrequire collection/file
は引用符がない.collectionの中のファイルRacketを引用して複数のモジュールを実行して1つのcollectionを共用しますが、ファイルが衝突するわけではありません.collectionとファイル名が分かれているので、両者はまったく合わないようです.ダウンロードされたすべてのファイルは、次のようなシステムのディレクトリに統一的に保存されます.
➤➤ ls /usr/local/Cellar/plt-racket/6.1.1/share/racket/collects
要するに、参照モジュール、参照ファイル、2つのニーズを書くことができますが、モジュールのcollectionはルートディレクトリ
info.rkt
で定義されています.文法もあまり確定していません.具体的な詳細はドキュメントを見てください.http://docs.racket-lang.org/pkg/metadata.html racket
#lang info (define collection "cirrusepal")
モジュール開発
モジュールを開発する時、モジュール名によってファイルを引用する必要があるかもしれないので、一般的にlinkをします.linkは実際にはインストールディレクトリにコマンドを走って、開発中のモジュールをグローバルにインストールします.
text
raco pkg install
実際には、あるファイルパスにリンクされた情報が記録されています.
text
➤➤ raco pkg show Installation-wide: Package Checksum Source racket-lib 436f0928598fc1a8abf27422e8e6588bef45f652 (catalog racket-lib) User-specific for installation "6.1.1": Package Checksum Source parser-rkt #f (link ../../../../repo/cirru/parser-rkt) sepal-rkt #f (link ../../../../repo/cirru/sepal-rkt) ➤➤ cat ~/Library/Racket/6.1.1/share/info-cache.rktd ((#"../../../../repo/cirru/sepal-rkt" (collection version) (lib "cirrusepal") 1 0) (#"../../../../repo/cirru/parser-rkt" (collection version) (lib "cirruparser") 1 0))
モジュール
require
provide
構文ファイル間、モジュール間、どのように相互参照するか、上には大体説明したように、ファイルがコードをエクスポートする方法があります.キーワードでタグ付けすればいいので、ドキュメントを見てください.http://docs.racket-lang.org/guide/module-basics.html注意キーワードは奇妙な
provide
で、フロントエンドの新しいキーワードではありません.最后の
#lang racket
は特殊な文法で、module
の简书です.具体的にはドキュメントを见て、他の人の使い方に従って直接书いてもいいようです.http://docs.racket-lang.org/guide/Module_Syntax.html#%28part._hash-lan... Racketは面白い言語ですが、深く掘ることはないと思います.ドキュメントを調べる必要があります.http://learnxinyminutes.com/docs/racket/http://docs.racket-lang.org/reference/index.html
eval
についてまた、Sepalコアの原理については、
eval
の使用時に注意しなければならないことがあります.http://stackoverflow.com/a/22742799/883571 racket
(define ns (make-base-namespace)) (define expr '(+ x 1)) (for/list ((x '(2 5 3 1 99 12))) (eval `(let ((x ,x)) ,expr) ns)) => '(3 6 4 2 100 13)
私もただこまごましたことを覚えているだけで、今はRacketを深く学ぶ時間がありません.