はてなブログに移行します

takuto_h's diary

プログラミング・シンポジウムで新言語Suzuについて発表します

第56回プログラミング・シンポジウムにて、「環境にメソッドを直接格納する新しいオブジェクトシステムの提案」というタイトルで発表を行います(発表プログラム)。独自に考案した全く新しいオブジェクトシステムを搭載する新言語Suzuについての発表です。…

私が愛するオブジェクト指向とそれを使わない理由

この記事では、私がオブジェクト指向のどこを愛しどこを素晴らしいと感じていて、そのうえでなぜオブジェクト指向を使うことを避けているのかを書き留めておきます。関数型言語使いの方で、「オブジェクト指向の何がいいのかわからない」「オブジェクト指向…

型推論を可視化してみた

型推論をスライドショー形式で可視化してみました。 http://www.geocities.jp/takt0_h/ibis-js/visualize.html 各フォームの機能は以下の通りです。 Control interpret Edit欄の内容をパーズ・型推論・評価し、結果をResult欄とScreen欄に表示します。 clear…

JavaScriptによる型推論器の実装:バリアント型

前:let と let rec 目次 パターンマッチ対象の型推論 昨日挙げた以下のコードではバリアントを使用していますが、パターンマッチ対象である m の型はどこにも明示されていません。 let rec add = fun m -> fun n -> case m of Zero -> fun _ -> n | Succ ->…

Ibis のバリアントとパターンマッチ

パターンマッチは必須か Ibis にバリアント型を実装する際問題となったのが、バリアントをどのように分解するかです。多くの関数型言語ではパターンマッチを使いますが、パターンのパーズやさまざまなデータ型への対応が必要となるため、少々面倒です。Ibis …

JavaScriptによる型推論器の実装: let と let rec

前:多相型 目次 次:バリアント型 再帰関数の型推論 以下は、階乗を求める関数 fac の定義です。 let rec fac = fun n -> if n = 0 then 1 else n * fac (n - 1)このように、Ibis で再帰関数を定義する際は let ではなく let rec を使います。これは OCaml …

JavaScript による型推論器の実装:多相型

前:型変数と単一化 目次 次:let と let rec 中身のない型変数 前回の例では、すべての型変数(Var オブジェクト)に型が代入されました。しかし、以下の場合はどうでしょう。 fun x -> x関数の本体に手がかり(関数適用など)がありませんから、x の具体的…

JavaScript による型推論器の実装:型変数と単一化

目次 次:多相型 未知の型 型推論の肝は、未知の型の扱いです。 例えば、 fun x -> x * 2という式の型推論をする際、仮引数 x の型は指定されていませんから未知です。関数の本体を見て「x は * の左辺に現れる」という情報を見つけることで初めて x の型が …

JavaScript による型推論器の実装

型推論に興味はあるけど、抽象的な説明が多く難しそうだと思っている方々。基礎的なことを押さえておけば、型推論器は簡単に実装できます。 ここでは、私が JavaScript で書いた型推論器を例に、型推論の基本的なアルゴリズムの一例を具体的に説明していきま…

Ibis クイックチュートリアル

Ibis Interpreter 四則演算 > 1 + 2 * 3 - : int = 7 > (1 + 2) * 3 - : int = 9 変数 > let x = 123 - : int = 123 > x - : int = 123 関数 > let double = fun x -> x * 2 - : (int -> int) = <closure> > double 2 - : int = 4 再帰関数 > let rec fac = fun n -> </closure>…

JavaScriptで型推論器を作りました

JavaScriptで型推論付き静的型付け言語のインタプリタを作成しました。これは、サイボウズ・ラボユースのメンバーとして開発をさせていただいたものです。ライセンスは MIT License です。Ibis Interpreter GitHub型推論の実装方法を解説するため、メジャー…

「エンジニアの未来サミット for students」というイベントで登壇します

詳細はこちら。 技術評論社×サイボウズ共催「エンジニアの未来サミット for students」10~12月に月1回開催 ─岡嶋大介氏,小飼弾氏,首藤一幸氏,まつもとゆきひろ氏登壇:インフォメーション|gihyo.jp … 技術評論社 http://group.cybozu.jp/news/10100102.…

筑波大学AC入試に合格しました

情報科学類です。お世話になった方々に感謝いたします。今後はより積極的に活動していきたいと思っています。 どうぞよろしくお願いします。

セキュリティ&プログラミングキャンプに参加して

帰宅してブログを書くまでがキャンプ、ということで、私は他の参加者よりも一週間ほど長くキャンプを満喫していたことになります。(吉岡さん、すみません)感想ですが、キャンプ中はとにかく無我夢中で過ごしていたため、未だに頭の整理が付いていないとい…

ホームページ復旧

私のホームページへのアクセスが元通り可能になったようです。http://www.geocities.jp/takt0_h/index.htmlご不便をおかけしました。

Yellow for Silverlight

n7shiさんが、Cyanに引き続きYellowもSilverlightへ移植してくださいました。Yellow for Silverlight - 七誌の開発日記「Cyanよりも更に洗練されている」というお言葉を頂いたので、Yellowの処理系を書くにあたって留意した点を書き留めておきます。 他への…

Cyan for Silverlight

id:n7shiさんが、CyanをSilverlightへ移植してくださいました。Cyan for Silverlight - 七誌の開発日記本体にほとんど手を加えずにブラウザ上で処理系を動かせるとは、思ってもみませんでした。 非常に参考になります。ありがとうございます。

ホームページにアクセスできない問題について

現在、ジオシティーズのシステム障害により、私のホームページにアクセスできないようです。 応急処置として、SkyDriveにていくつかのファイルを公開しました。OneDriveCyanやYellowをダウンロードする際は、こちらをご利用ください。 お手数をおかけして申…

セキュリティ&プログラミングキャンプに参加します

セキュリティ&プログラミングキャンプもちろん、言語組です。参加する皆さん、どうぞよろしくお願いします。

CPS変換と例外処理

yharaさんの、 CPS使うコンパイラとか参考にならないかなぁ>例外処理 はてなブックマーク - 試作言語Yellow - takuto_hの日記 という助言を元に探してみたところ、そのものずばりの論文が見つかりました。例外処理機構を備えた命令型言語のCPS変換とその定…

試作言語Yellow

http://www.geocities.jp/takt0_h/yellow/index.htmlYellowは、拙作の言語Cyanに対する私の不満を解消するために設計されました。Cyanと比べて以下のような特徴があります。 構文木を表すオブジェクトの種類を最低限に減らした パッケージシステムを導入した…

近況報告

前回の更新から3か月以上も間が空いてしまい、申し訳ありません。 学校行事等で忙しく、プログラミングの時間がなかなか取れませんでした。 また、ちょっとしたプログラムを作ってはいたのですが、とても公開できるような完成度ではなく、結局お蔵入りにな…

Shibuya.lisp TT#2に参加して

今回、初めてテクニカルトークというものに参加でき、そのうえLTまでさせていただいたことに感謝しています。(私のLTの資料: スライド一覧の、「Shibuya.lisp TT#2 LT資料 『Cyanの現状と、これから』」)このテクニカルトークで感じたのは、一口にLispと…

Shibuya.lisp TT#2に行ってきました

楽しかった!

cyan-1.0.3

cyan-1.0.3を公開しました。準クオートの中でIndexerをうまく評価できないという不具合が修正されています。変更点はほんのわずかなので、diffを載せておきます。 diff -ru cyan-1.0.2/cyan/src/Cyan/Evaluator.cs cyan-1.0.3/cyan/src/Cyan/Evaluator.cs --…

プログラミング再開

最近、諸事情によりプログラミングを全くやっていなかったのですが、いろいろと考えた結果、プログラミングを再開することにしました。自分がやりたいことをベースに、幅広く勉強していきたいと思っています。どうぞよろしくお願いします。

取材

実は12月に、とある取材を受けていたのですが、その記事が公開されました。Cyanを設計した高校生、5カ月で5つの言語を習得 (1/3):【写真】天才プログラマに聞く10の質問(3) - @IT学校に取材の依頼が来た時には、私でいいのだろうかと思いましたが、学校…

Grassインタプリタ

id:youzさんが、CyanでGrassインタプリタを書いてくださいました。Grass interpreter for Cyan language - * *scrap*実は、私自身はCyanでこのようなちゃんとしたプログラムを書いたことがないため、今、非常に感動しています。私がこんなことを言える立場で…

L-99をCyanで その5

L-99: Ninety-Nine Lisp Problemsより。 P05 # named let def(List.reverse1)^: let(loop)^(&opt lst = self, acc): if(lst.null?()): acc else: loop(lst.cdr(), [lst.car() | acc]) # optional argument def(List.reverse2)^(&opt acc): if(.null?()): acc…