2018-05-01から1ヶ月間の記事一覧
Conclusionまで来ましたとりあえず記事を読むのはここまでということで TiddlyWikiの中心部は裸のTiddlerストアとモジュールシステムを提供するマイクロカーネルのみ マイクロカーネルはJavaScriptで書かれており、ブラウザでもnode.jsでも動く コアプラグイ…
TiddlyWiki Core Applicationの続き トランスクルージョンとテキスト参照 TextReferenceとスペースなしの一単語として書いてあるからテキストリファレンスと書いたほうが雰囲気が出るだろうか テキスト参照 テキスト参照は指定されたTiddlerのフィールドの内…
TiddlyWiki Core Applicationの続き 動的な振る舞いはふたつの方法で追加できる から メッセージ メッセージはユーザによって発信されるイベントで、ウィジェットによって生成される "tm-delete-tiddler"といった型のプロパティを持つ メッセージは親へ親へ…
TiddlyWiki Core Applicationの続き UIとレンダリングパイプライン WikiText → パーズツリー → レンダツリー → DOM →シリアライズ→ 静的HTML パーザ コアプラグインはWikiTextのパーザを提供し、テキストをパーズツリーに変換する パーザはparserタイプのモ…
TiddlyWiki Core Applicationの続き タグ コアプラグインはTiddlerにタグを付ける仕組みを提供する 特定のタグを使ってTiddlerを取得する { tag: [tiddler1, tiddler3, tiddler3] }のようなハッシュマップを取得する 特定のタグがついてないTiddlerのリスト…
TiddlyWiki Core Applicationを読みます これはちょっと長いので分割になりそう マイクロカーネルはWikiストアと裸のTiddlerモデルを提供する マイクロカーネルは一連のTiddlerをロードしてモジュールシステムやプラグインを利用できるようにする TiddlyWiki…
Microkernel Architectureより TiddlyWikiのカーテルのアーキテクチャと、Tiddlerのデータモデルを見ていくよ TiddlyWikiはマイクロカーネルのいくつかの関数の上にできている おかげでTiddlyWikiはクリーンなしかけでカスタマイズできる TiddlerがわかればT…
TiddlyWiki - A quick Overviewを読む TiddlyWikiはSingle Page Applicationだよ JavaScriptで書かれ、GUIはHTML5とCSS3で描画される だからアプリケーションはシンプルさを保つことができ、従来のWebアプリケーションのように状態をエミュレートする必要が…
いきなりソースを読むのはちょっと無理だった TiddlyWiki/Devをちょっと見てみよう このサイト、"TiddlyWiki"って書いてるけどこれはTiddlyWiki5のことでいいんだよな・・・? とりあえず Introductionから TiddlywikiはSingle Page Applicationとして書かれ…
なんとなくWindowsだから微妙な動きをしている気がしたのでMacでもやってみた [tiddly]$ brew install node [tiddly]$ git clone https://github.com/Jermolene/TiddlyWiki5 この状態では動かないのか確かめておく [tiddly]$ cd TiddlyWiki5/ [TiddlyWiki5][…
ちょっと思い立ったことがありまして TiddlyWiki5 https://tiddlywiki.com のソースを見てみようかと https://github.com/Jermolene/TiddlyWiki5のreadmeを見てnode.js版をインストールすれば自動的にソースも入りそうなんですが、ここはひとつリポをcloneし…
適格かどうかと思いつつもつい回答してしまった 文系ですが、コンピュータに興味があり、計算機科学を学びたいと思っています。計算機科学を学ぶ上で、数学IIIまでの高校数学以外にやっておくべきことはありますか? 学びたいことがあったらすぐ、って言いた…
数学の本、読みたいとは思うんですけど大学のテキストとか論文とかはまだなかなか読めるレベルに達してなくて、一般向けの数学の本を見つけるとつい買ってしまいます ムスメも読むかもしれないし! 最短経路の本 レナのふしぎな数学の旅 作者: P.グリッツマ…
lambda作ったのでもうひとがんばりしてクロージャも作りたい 今は渡された引数のことしか知らないので静的スコープどころか動的スコープもありません こういうのはまだ動かないと・・・ > (meval '((lambda (a) ((lambda (b) (+ a b)) 2)) 1)) 3 動いたな な…
さてJ-Bob書いてみて意外と書けるもんだなと思ったりしてるところですが(何か苦労した気もしますが) せめてlambdaくらいある言語にしてみたいと思いまして もう1回やってみようと思います 目標レベルはScheme修行のeval程度(ただし継続は除く)
25分集中して仕事して5分休憩、を繰り返すってやつですWeb上の入門記事をいくつか見たくらいでそれくらいしか知りません ちょっと集中が足りてないなと思ってたんですがふとポモドーロってあったなと思い出してやってみようと思い立ちまして タイマーが必要…
ノンデザイナーズ・デザインブック [第4版] 作者: Robin Williams,小原司,米谷テツヤ,吉川典秀 出版社/メーカー: マイナビ出版 発売日: 2016/06/30 メディア: 単行本(ソフトカバー) この商品を含むブログ (2件) を見る 以前図書館で借りてさらっと読んだこ…
またもアドバイスいただきました (rev2 (rev2 l nil) nil) = l なら (rev2 (rev2 l (cons a nil)) nil) = (cons a l)ですね。この証明にも、rev2の引数がrcons(またはappend)である場合の補題が必要になるとおもいます。— SUHARA Hiromichi (@suharahiromi…
再考します、と言ってはみたもののイメージはつかめてなかったり (reverse/reverseだって証明はもっと簡単にできるイメージだった・・・) 再掲 reverse2/reverse2 の証明は、私も考えてみましたが、累積変数を使った定義と逆consを使った定義とが同じである…
rcons版のreverse/reverseを証明します reverse2/reverse2はどうしようかな rconsとreverseの定義・証明 (defun defun.rcons () (J-Bob/define (prelude) '(((defun rcons (x y) (if (atom x) (cons y x) (cons (car x) (rcons (cdr x) y)))) (size x) ((Q) …
想定以上に寝かせることになってしまいましたがアドバイスいただきましたので考えてみます寝かせたわりには特にアイデアは思いついていません reverse2/reverse2 の証明は、私も考えてみましたが、累積変数を使った定義と逆consを使った定義とが同じである、…
まあ一度真正面からどう動いているのか見てやろうかと ソースは組み込み関数を増やす前のものに戻しました とりあえずこんな感じのベタなことをしてみました これでも意外とつかめるかもしれないし
たかだか証明を数ステップ進めるだけで関数を何百万会も呼ばなきゃいけないのかという疑問を脇に押しのけてたくさん呼ばれてる関数を組み込み関数にしてみます なんにも頭を使わない力技
J-Bobを動かしてみます >> (load "j-bob.jbb") Welcome to J-Bob #<void> >> (J-Bob/step '((dethm car/cons (x y) (equal (car (cons x y)) x))) '(car (cons 'ham '(eggs))) '((() (car/cons 'ham '(eggs))))) 'ham >> (show-profile) '((untag 18159) (elem1 93</void>…
関数の呼び出し回数が見えるようにしてみようかと envに覚えるようにしておいて、japplyかなにかのタイミングで更新すればよさそう リストのままだと更新しづらい(気がする)から、structにしてみようか こういうの「純粋」なやりかたではどうやるのかな ま…
テストを移植しながら調べているとここが無限ループとは言わないまでも やたらと時間がかかっていることを発見しました なおインデントは自分で直しています(以下同文 >> (defs? (tdefs) '((defun double (x) (add x x)) (defun len (xs) (if (atom xs) '0 …
テストが書けるようになりましたのでj-bob.jbbにテストを移植しつつ調査していきました へんな値が返されるのを発見 implication/1exp actual :(if (equal x 'a) (equal (quote-c 't) 'b) 't) expected:(if (equal x 'a) (equal y 'b) 't) このテストで発生
どうやって調べようか テストを移植するかな これまで書いたテストを再利用するためにはまずmy/testが書けなきゃいけなくて そのためには最低限displayとbeginがほしい
えーとあとは ファイルから読めるようにしたらいいのか どうするのがスマート? J-Bobにloadつけるのかな それともJ-Bobの外に作るのがいいだろうか いったん外で使うのを作って、その後J-Bobに入れよう 文字列型もないけど きっとreadならなんとかしてくれる
さていよいよ関数定義と関数適用です よく覚えていないのでとりあえず雑に書いてみます J-Bobではクロージャとか考えなくてもよさそうな気がしている まずは関数定義 J-Bobのdefunは式一つ書ければいいんだよな・・・?