灘校パソコン研究部(NPCA)におけるLispの活用について
-
Upload
stibear-stibear1996 -
Category
Documents
-
view
1.270 -
download
8
description
Transcript of 灘校パソコン研究部(NPCA)におけるLispの活用について
自己紹介
中西航
灘高等学校2年生
NPCA部員
@stibear1996
Lisp歴は21ヶ月(2年弱)
ILC2012に参加
最近はもっぱらCommon Lispですが, R7RSはとても気になる
メタプログラミング,人工知能などに興味
What’s NPCA
Nada Personal Computer users’ Association の略
灘校パソコン研究部
灘中学校・高等学校のパソコン部
部員 中学生:70名 高校生:36名
主に昼休み,放課後に活動
HP: http://www.npca.jp/
活動(2013) パソコン甲子園にて部員2名のチームが4位に入賞 Facebook CTFにて部員2名のチームが6位に入賞 SECCON 四国大会にて部員4名のチームEpsilonDeltaが優勝 第34回U-20プログラミング・コンテストにて部員1名が経済
産業大臣賞を受賞 SECCON2013にて部員1名が4位入賞 セキュリティ・キャンプ 2013に1名が参加 オープンソースカンファレンス京都 2013にて講演、展示 第7回アジア太平洋情報オリンピックにて部員1名が銀メダ
ル獲得 第67回灘校文化祭 NPCA Programming Contest Alpha #02を開催 日本情報オリンピック本選にて部員1名が銀メダル獲得、1
名が地区優秀賞を獲得 部員4名が情報オリンピック日本代表選考合宿参加権を獲得 部内鍋パーティーを開催
活動
主にプログラミング
他にも,DTM,3Dモデリング,サーバ管理,技術書の読書会,講義,etc…
対外活動(KOF, OSCなどのイベント参加)
不定期開催のLT大会
花見,合宿,クリスマスぼっち会など, 福利厚生も充実
最近は活動が多様化
後輩への技術継承など,課題は山積
プログラミング
部員それぞれが思い思いに作りたいものを作る
成果物は,文化祭や,KOF(関西オープンフォーラム),OSC(オープンソースカンファレンス)などで発表
例えば,chat bot,ジャッジシステム,自然言語翻訳など
後輩への講義も また,今年は勉強会など互いに研鑽しあう
イベントも
プログラミング
言語 Lisp,Ruby,Python,Haskell,Coq,Lazy K,C/C++(順不同)など…
それぞれ思い思いの言語を使用
Linux,Windows,OS X など各種OSで開発
後輩にどの言語を教えるかは長年の課題
押し付けるわけにもいかないため,なかなか難しい
サーバシステム
Xeon機 3台
Core2機 2台 (うち1台自作)
Celeron機 5台
その他 3台
Windows ServerやCent OSなど
仮想機上にはUbuntu Serverも
部運営
部員の情報はデータにして管理
Redmineでタスク・進捗管理
チケットに追い立てられる日々
定期的な部会の開催
会計に申し立てると好きな本が TaPL,プログラミングコンテストチャレンジ
ブック,SICP などなど
Lisper
実質私1人
布教により高1に1人増えた
LT大会や講義など,日々布教に努める
が,なかなか成果は上がらず
Schemeなら使えるという人間は何人か
昔はOBが何人か使っていた(らしい)
中1に期待
Chatbot
部のSkype部屋で走っている
Written in Common Lisp
「ロイディ」を参考にした
Skype Desktop APIが廃止されるらしいので,存亡の危機
言行録はTumblrに
合宿
ハッカソンにて,ブラウザゲームを作ることに
それぞれ, 中1がCでコンソールアプリケーション
中2がJavaScriptでWeb UI
私がCommon LispでWebサーバ
を担当
一晩ではさすがに間に合わず…
部誌
今年の文化祭では,Lispのマクロ(特にCommon Lisp)について扱った
打ち上げにてOB(wasabiz氏)にけしかけられ,Schemeの健全なマクロについて書くことに
夏休み中,名古屋ででこれき氏に会い, アドバイスを仰ぐ
Kyoto.Lisp TT #2で宣伝
鋭意執筆中
Schemeのマクロ
syntax-rules,syntax-caseしか知らなかった
他にも Syntactic closure
Reversed sc
Implicit renaming
Explicit renaming
SRFI 72 など…
処理系によっては伝統的マクロも
Schemeのマクロ
R^4RSではAppendixに
R^5RSではR^4RSから低水準マクロの構文を無くしたものが追加される
R^6RSではsyntax-caseが登場 ライブラリを導入
そのため,フェーズという概念が必要に
マクロのCPS変換
R^5RSのsyntax-rulesを使う際に,マクロ内でマクロを呼ぶ場合,CPS変換が必要
これはsyntax-rulesの定義によるもの
syntax-rulesで書かれたマクロは,実質的に名前呼び等に等価なため
syntax-caseやsc等ではこれは必要ない
explicit renaming
R^nRSにはない
低水準
意図的に健全性を壊せる
定義時の環境を,生で渡さず,それへのAPIを関数として渡す
rename関数を用いて,定義時の環境で評価するシンボルを指定
今後
これらをまとめて,解説するつもり
健全なマクロについての日本語の文献は少ない
さらに言えば,健全なマクロに関する研究は少ない(?)
しかし,開いてみれば面白そうな話がごろごろ
他の言語のマクロシステムについても,興味がある