トップ «前の日記(2012-10-19) 最新 次の日記(2012-11-07)» 編集

Route 477



2012-10-24

[lisp][event] International Lisp Conference 2012 Kyoto に行ってきた

International Lisp Conferenceが京都に来るというので、せっかくなので参加してみました。

普通の「学会」よりも若干カジュアルな感じですが、RubyKaigiみたいなコミュニティベースのカンファレンスともやはり違います。両者の間(の学会側寄り)といった感じでしょうか。

感想ですが、みんな好き好きに好きなことをしてるので、僕も好きなことをしなければという気持ちになりました。 BiwaSchemeをなんのために作っているのか?みたいなことを考えたんですが、「規格に書いてある機能を1つずつ実装していくのが楽しい」ので、 誰にも褒められなくても多分やるのかなぁと思いました。ペンシルパズル類をやるのと同じようなものでしょうか?

以下はメモを貼りつけただけ。これだけでは内容はわからないと思いますが、とにかくLispに関係する多岐にわたる分野の発表があった雰囲気でも伝われば。

あとはTwitter検索 (#ILC2012)が参考になると思います。

On Lisp extensibility, and its impact on DSL implementation|http://international-lisp-conference.org/2012/tutorials.html#sec-1

DSL vs GPL。General Programming Languageかな?

What is the best language for compiler writers

某ゲームのために、LispによるCコンパイラを…(省略されていますが、表示する方法はありません)

Programming AllegroGraph in Lisp

  • dataとsemantics(意味)の両方をもつDB
  • NOKIA: 携帯会社、スリッパのメーカー (違うものに同じ名前)
  • 中銀=中国銀行=Bank of Chine (同じものに複数の名前)
  • Louvre(subject) located_in(predicate) Paris(object)
  • 新しいpredicateを追加するときにスキーマの変更が不要
  • one-to-manyが中間テーブルなしで直接表現できる
  • ...
  • billions of triplesに対してms単位でクエリーが返る
  • 推論ができる
  • tripleは数値のベクタとして保存している #(2 4 5 6)

Fifty Years of a Lisp User

  • Topdown or bottomup? Hardest first
% cal 9 1752
      9月 1752
日 月 火 水 木 金 土
       1  2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
  • M式で書かれたKSLIPプログラム
  • LISPマシン
  • GCのアニメーション化
  • 紙テープをハードウェアなしで復元するには?
    • スキャンして画像処理
  • GCの可視化のデモ

A Class-based Object-oriented Programming Framework Based on CLOS

  • CLOS/Class-Based (CLOS/CB)
  • CLOS上に実装
  • Javaのように、メソッドがクラスに属しているモデル
  • 単一継承のみ

Scheme to C++ Simple Translator:Scm2Cpp

Generating Probability Random Numbers using Common Lisp

  • simple API && best speed optimization

Lisp: a language of freedom

  • Lisp liberates us from ... Rigid way of thinking
  • TAO on Lisp
  • 3rd TAOは論理プログラミングの要素も備えていた
  • 回文
    • Never odd or even.
    • Was it a car or a cat I saw?
  • 真ん中に「(or 0」を持ってくることで回文Lispプログラムができる
  • tarai
  • lispのためのベンチマーク関数
 t(x,y,z) = if x<=y then y else t(t(x-1,y,z),t(y-1,z,x),t(z-1,x,y))
 O(n^n)
  • ビジービーバー
  • tak(x,y,z): ジョン・マッカーシーのtypoが広まった版 (then yがthen zになっている。計算量はずっと低い)
  • 竹内関数は実数に対しても同様に振る舞う
  • 竹内関数音楽 by Keisuke Ai
    • フルバージョンは4日間かかる
  • カレンダー
  • 任意の天体に対して、「日」「月」「季節」とはどのように定義できるか?
  • 「週」は、「最初の年」は?
  • Lisp motivates and inspires a liberal way of thinking even on worn-out problems

Ralph - A Dylan dialect that compiles to JavaScript

motivation

  • アプリ開発
  • Web技術
  • JSのみサポート
  • なぜJSか
    • desktop/mobile/server dynamic/functional/oop
    • 言語機能に不満(collecitons/conditions/modules/macros)
  • coffee dart typescript

goal

  • performance/features/expressiveness
  • inspired by dylan

dylan

  • Apple / Based on scheme/CL / lisp-1, CLOPS / ALGOL-like syntax / Hygienic rule-based macro

features

  • s-exp / dylan special forms, functions / hygenic procedual macro / module system
  • simplefied collections/condition system/numerical tower
  • interop
    • <object> => Object
    • <array> => Array
  • procedual hygienic macro (inspired by Clojure)
    • 例えば、マクロの中で+をtuka

future work

  • more optimizations / type cheking/inference / multiple dispatch

メモ

Plumber - A Higher-Order Data Flow Visual Programming Language in Lisp

  • DFVPL
  • GUI上で作ったデータフローの図がLispプログラムにコンパイルされるっぽい
  • 「+」は2入力だが、片方を空けておくことで「カリー化された+」を表現する

Xcrypt in Lisp: A Scripting System for Job Level Parallel Programming in Lisp

  • いろんなスパコン用のジョブスクリプトを生成するシステム
  • Lispインターフェイス
  • コールバック(:before, :after, :before_in_job, :after_in_job等)
  • jmapcar: job level map

Revisiting CLOS MOP

  • CLOS: generic func/多重継承/declarative method combination/MOP
    • CLの型が統合されている
    • No data encapsulation

LIL: CLOS reaches higher-order, sheds identity, and has a transformative experience

  • Lisp Interace Library
  • CLのための?データ構造ライブラリ
  • Interface Passing Style?
 (assoc   map key)
 (gethash key map)
  • Polymorphism
 (lookup obj key)  ; objはmap, hash等
  • IPS
 (lookup <interface> obj key)
 例
 (lookup <alist> '((2009 . "BOS") (200 . "RNO")) 2010)
    • <alist>はinterface object
  • pure:insertとstateful:insertは違うインターフェイス(mutability)
  • pure:lookupとstateful:lookupは同じ

Parametric interface

  • <alist>は、厳密には(<alist> <eql>)のように比較関数が必要
(lookup (<alist> <case-insensitive-string>) '((...

このスタイルを使って、いろんなコンテナに対しpolymorphicなメソッドが書ける。

(demethod sum-values ((<i> pure:<map>) map)
  ...
  (nth-value 1 (first-key-value <i> map))
  ...
  (lambda (m) (sum-values <i> m))

複数のinterfaceをとるメソッドも書ける(頻度は多くないが)

 (convert <dest> <orig> object)

定義

 (define-interface <foo> ...)
 (defmethod bar ((<i> <foo>))
   ...)

Managing Complex Structured Data In a Fast Evolving Environment

  • LispでDSLを書いた

Along Hop

  • http://hop.inria.fr/ multi-tier programming language for the Web 2.0 and the so-called diffuse Web
  • Lisp in Small Piecesの著者でもある

歴史

  1. Static HTML
  2. CGI
  3. XHTML (html + css)
  4. サーバ側の複雑化(web MVC)
  5. JavaScript (DOM、クライアントサイドプログラミング)
  6. XMLHttpRequest
  7. クライアントサイドMVC
  • 一部の計算はクライアントで、一部の計算はサーバで行われる
  • 一つのプログラミング言語に融合したい
    • 言語というか、それ自身がWeb app frameworkみたいな感じですね
  • 3-tiers (1DB、1Server、N Client)

Hop

  • Schemeをベースにした言語
  • symmetric (HTMLが1st class、サーバ側でもDOMを触れる)
  • 構文「$」と「~」で、明示的にserver-side/client-sideを指定できる
 (<TD> :onclick ~(alert "1"))
  • Esterel
  • HipHop - embedded Esterel within Hop

Enabling Practical Reconfigurable Computing Through Domain Specific Compilers

BABAR: Wikipedia Knowledge Extraction

講演者が飛行機を逃したため、LT枠に。

  • ルービックキューブ
  • 全部のマスに数字を振る (8x6)
  • ある2つのマスを入れ替えることはできるか、とか
  • cl-permutation

Author Name Disambiguation System for Academic and Research Papers

  • 名寄せ(ある2つの名前が同じ人を指すのかどうか)
  • 400万レコード
  • 機械学習
  • CiNii (サイニィと読むらしい)
  • (質疑) メールアドレスを使うと精度高いのでは
    • 昔の論文にはメアドがないので
  • 日本人の名前は、複数の書き方があり得るか?
    • 漢字なら同じ
    • いや、codepointの制限が…
    • 「普段は簡単な方の渡辺を使ってる」みたいなことありそう

Automatic and Tunable Multi-Level Locality Improvement with a Lisp Garbage Collector

-- 手記はここで途切れている --

本日のツッコミ(全2件) [ツッコミを入れる]
zick (2012-10-26 07:26)

GPLはGeneral Purpose Languageと言っていたと思います。

yhara (2012-11-08 01:57)

でしたか。ありがとうございます。