Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

F#とトランスレータ

1,350 views

Published on

F#談話室(4) LT

Published in: Technology
  • Be the first to comment

F#とトランスレータ

  1. 1. F#談話室(4) LTF#とトランスレータ七誌
  2. 2. 自己紹介● F#の構文が好きで触っている人。– 関数型言語に造詣が深いわけではない。– 一部機能しか使わないため、知らないことが多い。– 暇なときにCoreのソースを眺めたりはしている。● GUIを組むのが好きだが、猫も杓子もWebという状況に取り残されていた。– しかし最近マルチプラットフォームGUIに絶望して、ようやくHTML5/JavaScriptに手を出した● JavaScriptが動的で柔軟なのは理解したけど、今の所、静的型付でないのが気持ち悪い。
  3. 3. 馴れ初め● 私の中でC#絶頂期だった2005年頃、周りから関数型・関数型という声が聞こえ始めた。● 当時は今ほどHaskellの知名度は高くなく、どちらかというとSICPの影響でLISP系が見直され始めたような雰囲気だった。(独断と偏見)● 私はC#でWinFormsアプリばかり作っていたので、GUIを作るのが便利になるなら試してもいいんだけど・・・という言い訳で何もしなかった。● そんなときに知ったのがF#。– WinFormsなどC#の資産がそのまま使える!
  4. 4. 構文との苦闘● とりあえずF#の勉強もそこそこに、C#で作っていたものをF#で作り始めた。● C#脳のままなので、まずクラスから書く。● クラスの構文があまりにも違っていて、さっぱり分からなかった。● 数年の放置後、どうにかC#直訳調で書けるようになったので、ノウハウを対訳としてまとめた。C#プログラマのためのF#入門http://d.hatena.ne.jp/n7shi/20090722
  5. 5. トランスレータ● はっきり言って直訳ならわざわざ勉強するまでもないことなので、自動で変換したくなった。● サポートする文法を限定すれば、構文解析結果をほぼ1対1で出力できるはず。● F# Advent Calendarのネタを兼ねてC#からF#へのトランスレータを作成。開発言語はC#。● トランスレータ自身をF#に変換して、ビルドしたバイナリをSilverlightでホスティングして公開。言語変換でいきなり実用を目指すhttp://d.hatena.ne.jp/n7shi/20101226
  6. 6. JavaScript● トランスレータを放置しているうちに、Silverlightがほぼ消えてしまった。● 人に見せようにも動かす環境がない!● F#用のトランスレータから派生した俺々言語用をベースに、JavaScript用を作成。– ただしAPIの違いは手動修正が必要。● それを使ってC#からF#へのトランスレータをJavaScriptに変換・修正。ブラウザ上で動作。C# to F# translatorhttp://7shi.bitbucket.org/cs2fs/
  7. 7. F#入門● トランスレータで済むようなことはさっさと飛ばして、よりF#らしい部分に集中した方が良い。● とは言えある程度は慣れが必要なので、とりあえず何か作ってみるという方針でF#入門を主催。– あまり成功しているとは言い難い。– 「何が良いのか分からなかった」と言われたり。– C#で別に困っていない、という例のアレ。● 書いてみて気に入った人だけ残れば上等?– 職人修業は育成ではなく選別だ、という例のアレ。– 分母が大きくないと通用しないやり方、というオチ。
  8. 8. アイデア● 各自の判断に任せるだけだとお後があまりよろしくないので、もうちょっと踏み込みたい。● 関数型言語的なちょっと「怖い」世界を楽しむような方法はないだろうか。● 何か課題を出して書いてもらう、競技プログラミング的な何かとか?– F#初心者でも何かやる余地があるような方法でないと単なる振り落としになってしまう。– 手続型ベタベタなF#コードを提示して、関数型すっきりなコードに書き換えるとか。
  9. 9. FunScript● F#からJavaScriptへのトランスレータ。https://github.com/ZachBray/FunScript● HTML5アプリをF#で開発できる!● F#コードをfscでビルドしてアセンブリから変換。● TypeScriptの型プロバイダでAPIをインポート。● すごい仕組みだけど、ちょっと重厚すぎるかも。– TypeScriptみたいに変換・動作確認までブラウザで完結すれば、一気に使いやすくなりそう。– fscやコアライブラリすべては大きすぎるので、やるならサブセットとして仕様を切り分けるところから?
  10. 10. ご清聴ありがとうございました

×