FSharp.Core.Printf モジュールについてのメモ
メモ。そのうち記事に昇格するかも。
間違っているかもしれないので、質問疑問指摘その他お待ちしております!
printf, printfn
System.Console.Out に書き込む。n がつく場合は書き込み後に改行。
fprintf, fprintfn
引数で渡された System.IO.TextWriter に書き込む。たとえば StreamWriter とか?
eprintf, eprintfn
System.Console.Error に書き込む。
sprintf
文字列返すやつ
bprintf
渡された StringBuilder に書き込む。
failwithf
最後に failwith に渡して例外を投げる。
kが頭文字につく関数とつかない関数
kbprintf と bprintf ってどういう違いがあるのという話。
PrintfEnv.Finalize 実行時に渡された関数を適用する。
k が付かない場合は、だいたいの関数が k*printf に ignore 関数を渡している。
StringFormat
書式を作る的な何か。
let fmt = Printf.StringFormat<string -> int -> string>("こんにちは、%sさん!今年は%d年です。") sprintf fmt "hoge" 2013 // => "こんにちは、hogeさん!今年は2014年です。"
設定ファイルから読み込んでsprintfに渡すとかできるようになります。
ちなみに、指定した型が間違っていたら実行時に例外を投げます。
BuilderFormat
StringBuilder に渡すための書式なので、返す型は unit。
let builder = StringBuilder() let fmt = BuilderFormat<string -> unit>("hogeさん、%s!") bprintf builder fmt "こんにちは" builder.ToString() // => "hogeさん、こんにちは!" |> ...
TextWriterFormat
TextWriter に渡すための書式なので、返す型は unit。
let fmt = TextWriterFormat<int list -> unit>("とりあえず中身を見る: %A") printfn fmt [1;2;3]
%A を含む文字列をFormatに渡したい
前述で書いている通り、渡したいものの型を書いておけばだいたい動くと思われます。
残り
あとでかく
いろふさんとの遭遇記
これは いろふ Advent Calendar 2013の記事です。
なんとなくいろふさんとのなれそめを書きます。
事の始まり
あれは2011年3月18日ののこと。
TDDBC福岡という場所で、あの方と初めて邂逅したのだ。
そう、いろふさんと──
しかし、お互い人見知り(?)のため、この時は3言程度しか言葉を交わせなかったと記憶している。
「よろしくお願いします」
「このコードについて前で説明していただけませんか?」
「TDDBC大阪、楽しみにしてます!」
始まりはこういうものだ。
関西ゲームプログラミング勉強会
ここでは同じ会場にいたものの、顔をあわせた記憶はない。
東京3連戦
JGGUG、SCMBC、TDDBC3連戦を、偶然にもいろふさん(しんやさんやきょんさんも)とともに参加することになった。
私はきょんさんに泊めていただくことになっていたのだが、途中でいろふさんも巻き込んだ記憶がある。
ああそうだ、TDDBCの運営に巻き込んだのだった。
あのときのことは今でも感謝しているし、これからもずっとするだろう。
中略
あとで書く
(ごめんなさいごめんなさい)
時は流れ
いろふさんとは。インスタンスとは。
あの方にはまだまだ謎がたくさんある。
しかし、それでいいのだと思う。
だってそれこそがきっと、「いろふさん」なのだから──
「Javaで継続モナド」をF# に翻訳
F# Advent Calendar 20135日目の…記事の予定でした…主催者でありながら大遅刻して申し訳ありません。
ネタは?
@gakuzzzz さんの 「Javaで継続モナド」をScalaに翻訳/Scala Advent Calendar 2013 や、その元ネタである が面白かったため、急きょネタ変更してF#に翻訳したよという内容にしました。
Lensの記事が書きにくかったということでは…すみません、そのうち書きます。
注意事項
- 文章は限りなく削っているので、先に元記事や元記事の元記事を読むことをお勧めします
- C#版も作ろうとしましたが、開始5分で気力がつきました
コード
pocketberserker/ContMonadStudy · GitHub
コミットログをおいかけることで、順を追ってコードを読むことができます。
ただし、Basis.Coreを参照に追加した部分でコミット忘れが発生したため(そして今のPCだとrebaseしたらリポジトリが壊れたため)、NuGet周りのコミットだけ後のほうになってしまっています。注意してください。
解説
継続渡し形式とは
特になし。
継続渡し形式のメソッドの関数化
Functionクラスnに関してはラムダ式で対応させました。
型は…このあたりはまだ頑張って書いてますね。
もう少し使用例
- BinaryValueはレコードとして定義
- printResultは型パラメータ書くのがだるかったので型推論に身をゆだねることに
- ScalaのidentityはF#のid
- Basis.Core便利です see. .NETの標準ライブラリと仲良くする話 - ぐるぐる~
- パイプライン演算子がぽぽぽぽーん
「ルールは大事よね」
朝眠かったので飛ばしました。そのうち別記事でなんとかしたい。
call/cc
特になし。
おまけ
とりあえずコンピュテーション式を定義してみました。
まとめ
今回はわりと素直にScalaからF#に移植できましたね。めでたしめでたし。
初めて勉強会に参加してから今まで学んだことを振り返る
11月前半の有給消化期間に暇だったことと、そういえば3月に大学院を修了したのに忙しくて何も書いてなかったなと気がついたので、初めて勉強会に参加してから何を学んだか振り返ってみます。
まぁ、メンズTDDというイベントの懇親会で下記エントリに関連する話を聴いたことも多少は影響しているとは思います。
僕がソフトウェア開発を勉強し始めて3年間でやったこと - うさぎ組
0. 勉強会初参加以前
初めて勉強会に参加した2010年7月より以前は、自主的にはやっていたものの、あくまで学内の中という狭い空間で知った単語、書籍を頼りに学んでました。
まぁ、GoFのデザインパターンやリファクタリング、TDDとは何ぞやということを本腰据えて唸りながら学んだのは、大学4年ソフトウェア工学専門の指導教員の下についてからのことです。
- 作者: ケント・ベック,Kent Beck,永田渉,長瀬嘉秀,株式会社テクノロジックアート
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2008/12/22
- メディア: 単行本(ソフトカバー)
- 購入: 30人 クリック: 502回
- この商品を含むブログ (91件) を見る
- 作者: エリックガンマ,ラルフジョンソン,リチャードヘルム,ジョンブリシディース,Erich Gamma,Ralph Johnson,Richard Helm,John Vlissides,本位田真一,吉田和樹
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 1999/10
- メディア: 単行本
- 購入: 21人 クリック: 711回
- この商品を含むブログ (205件) を見る
- 作者: 結城浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2004/06/19
- メディア: 大型本
- 購入: 51人 クリック: 762回
- この商品を含むブログ (395件) を見る
直近3か月はこいつらをゆるゆると読んでいました(結局読み終わったのは勉強会後でしたが…)。
1年目. TDDBC名古屋参加以降
人生で「学ばなければこの先生きのこれない」と恐怖したのは、この時が2度目でした*1。知識も、経験も、圧倒的に上な方々が、40人以上その場に居たわけですよ。これくらい持っていないとこの世界ではやっていけないのか、と思ったわけです。
それと同時に、あのイベント中にこんなことも感じました。
「あのOCamlやScalaとかいう言語でペアプロしている人々はなんて楽しそうな、素敵な笑顔でコードを書くのだろう!」*2
「もしや、あれら関数型言語というものには楽しく開発できる何かがあるのでは…?」
というわけで、これ以降はソフトウェア開発をメインに、関数プログラミングも少しずつ学んでいくことになります。
書籍に関してはTDDBC名古屋の主催者だった@bleisさんと、講師であった@t_wadaさんのつぶやきを主な情報源にしていました。
プラスしてbleisさんや@sinsoku_listyさん、@tosikawaさんのつぶやきを頼りにrebase、reset特化でGitを学んだり、指導教員に書籍を借りたりとかですね。
あとは、JaSSTに参加した影響もあって少しずつテスト(自動化寄りだったけど)について学んだり、途中からは講義の関係もありJavaを扱うことが多かったため、TDDBC福岡で存在を知ったGroovyも併用していました。
- 作者: 秋山浩一
- 出版社/メーカー: 日科技連出版社
- 発売日: 2010/10
- メディア: 単行本
- 購入: 7人 クリック: 153回
- この商品を含むブログ (18件) を見る
リファクタリング―プログラムの体質改善テクニック (Object Technology Series)
- 作者: マーチンファウラー,Martin Fowler,児玉公信,平澤章,友野晶夫,梅沢真史
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/05
- メディア: 単行本
- 購入: 94人 クリック: 3,091回
- この商品を含むブログ (307件) を見る
レガシーコード改善ガイド (Object Oriented SELECTION)
- 作者: マイケル・C・フェザーズ,ウルシステムズ株式会社,平澤章,越智典子,稲葉信之,田村友彦,小堀真義
- 出版社/メーカー: 翔泳社
- 発売日: 2009/07/14
- メディア: 大型本
- 購入: 45人 クリック: 673回
- この商品を含むブログ (147件) を見る
- 作者: 荒井省三:いげ太
- 出版社/メーカー: 技術評論社
- 発売日: 2011/01/07
- メディア: 大型本
- 購入: 6人 クリック: 264回
- この商品を含むブログ (26件) を見る
オブジェクト指向プログラマが次に読む本 ?Scalaで学ぶ関数脳入門
- 作者: 株式会社テクノロジックアート,長瀬嘉秀,町田修一
- 出版社/メーカー: 技術評論社
- 発売日: 2010/11/13
- メディア: 単行本(ソフトカバー)
- 購入: 11人 クリック: 340回
- この商品を含むブログ (32件) を見る
- 作者: 関谷和愛,上原潤二,須江信洋,中野靖治
- 出版社/メーカー: 技術評論社
- 発売日: 2011/07/06
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 392回
- この商品を含むブログ (155件) を見る
- 作者: Graham Hutton,山本和彦
- 出版社/メーカー: オーム社
- 発売日: 2009/11/11
- メディア: 単行本(ソフトカバー)
- 購入: 14人 クリック: 503回
- この商品を含むブログ (115件) を見る
- 作者: エリヤフ・ゴールドラット,三本木亮
- 出版社/メーカー: ダイヤモンド社
- 発売日: 2002/02/23
- メディア: 単行本(ソフトカバー)
- 購入: 16人 クリック: 148回
- この商品を含むブログ (147件) を見る
中でも、きのこ本はお気に入りの一冊です。
- 作者: 和田卓人,Kevlin Henney,夏目大
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/12/18
- メディア: 単行本(ソフトカバー)
- 購入: 58人 クリック: 2,107回
- この商品を含むブログ (337件) を見る
2年目. SCMBC開催以降
この少し前あたりから、勉強会に行く傍ら雑多に読んでた記憶があります。
あと、@kyon_mmさんや@oota_kenさん、@goyokiさん、@irofさんらと会話することでテストについてもっと真面目に考えたりした感じですね。
- 作者: Robert C. Martin,花井志生
- 出版社/メーカー: アスキー・メディアワークス
- 発売日: 2009/05/28
- メディア: 大型本
- 購入: 27人 クリック: 914回
- この商品を含むブログ (80件) を見る
ソフトウェアテスト教科書 JSTQB Foundation 第3版
- 作者: 大西建児,勝亦匡秀,佐々木方規,鈴木三紀夫,中野直樹,町田欣史,湯本剛,吉澤智美
- 出版社/メーカー: 翔泳社
- 発売日: 2011/11/12
- メディア: 単行本(ソフトカバー)
- 購入: 5人 クリック: 85回
- この商品を含むブログ (9件) を見る
- 作者: ソフトウェア・テストPRESS編集部 編,ソフトウェア・テストPRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2011/07/15
- メディア: 大型本
- 購入: 23人 クリック: 502回
- この商品を含むブログ (28件) を見る
- 作者: ビャーネ・ストラウストラップ,Bjarne Stroustrup,επιστημη,エピステーメー,遠藤美代子(株式会社クイープ)
- 出版社/メーカー: 翔泳社
- 発売日: 2011/08/10
- メディア: 大型本
- 購入: 10人 クリック: 283回
- この商品を含むブログ (49件) を見る
- 作者: SQuBOK策定部会
- 出版社/メーカー: オーム社
- 発売日: 2007/12
- メディア: 単行本
- 購入: 9人 クリック: 150回
- この商品を含むブログ (32件) を見る
- 作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘
- 出版社/メーカー: インプレスジャパン
- 発売日: 2011/09/27
- メディア: 単行本(ソフトカバー)
- 購入: 12人 クリック: 235回
- この商品を含むブログ (44件) を見る
パターン、Wiki、XP ~時を超えた創造の原則 (WEB+DB PRESS plusシリーズ)
- 作者: 江渡浩一郎
- 出版社/メーカー: 技術評論社
- 発売日: 2009/07/10
- メディア: 単行本(ソフトカバー)
- 購入: 75人 クリック: 1,306回
- この商品を含むブログ (153件) を見る
Making Software ―エビデンスが変えるソフトウェア開発
- 作者: Andy Oram,Greg Wilson,久野禎子,久野靖
- 出版社/メーカー: オライリージャパン
- 発売日: 2011/09/24
- メディア: 大型本
- 購入: 1人 クリック: 132回
- この商品を含むブログ (17件) を見る
あとはF#熱が復活したり、Kinect SDKで遊んだりしていました。
イベントの開催などは、今を思えばよくあんな無茶できたよなーというレベルでTDDBCを開催したりしていましたね…。
3年目. 学生生活最後
修士学生よそれでいいのか、と言わんばかりに研究以外のこともやっていた気がします。
あと、積読や挫折した書籍をきちんと読もうとしたのもこの時。
会社が決まってからは、こっちも必要だよなーと思いながら読んだりとか。
インターフェイス指向設計 ―アジャイル手法によるオブジェクト指向設計の実践
- 作者: Ken Pugh,角谷信太郎(監訳),児島修
- 出版社/メーカー: オライリージャパン
- 発売日: 2008/05/24
- メディア: 大型本
- 購入: 16人 クリック: 357回
- この商品を含むブログ (67件) を見る
- 作者: Jonathan Rasmusson,西村直人,角谷信太郎,近藤修平,角掛拓未
- 出版社/メーカー: オーム社
- 発売日: 2011/07/16
- メディア: 単行本(ソフトカバー)
- 購入: 42人 クリック: 1,991回
- この商品を含むブログ (245件) を見る
アジャイルな見積りと計画づくり ~価値あるソフトウェアを育てる概念と技法~
- 作者: Mike Cohn,マイクコーン,安井力,角谷信太郎
- 出版社/メーカー: 毎日コミュニケーションズ
- 発売日: 2009/01/29
- メディア: 単行本(ソフトカバー)
- 購入: 74人 クリック: 764回
- この商品を含むブログ (222件) を見る
オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)
- 作者: バートランド・メイヤー,酒匂寛
- 出版社/メーカー: 翔泳社
- 発売日: 2007/01/10
- メディア: 単行本(ソフトカバー)
- 購入: 11人 クリック: 307回
- この商品を含むブログ (131件) を見る
エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)
- 作者: エリック・エヴァンス,今関剛,和智右桂,牧野祐子
- 出版社/メーカー: 翔泳社
- 発売日: 2011/04/09
- メディア: 大型本
- 購入: 19人 クリック: 1,360回
- この商品を含むブログ (129件) を見る
エンタープライズ アプリケーションアーキテクチャパターン (Object Oriented Selection)
- 作者: マーチン・ファウラー,長瀬嘉秀,株式会社テクノロジックアート
- 出版社/メーカー: 翔泳社
- 発売日: 2005/04/21
- メディア: 単行本
- 購入: 10人 クリック: 635回
- この商品を含むブログ (142件) を見る
アジャイルなゲーム開発 スクラムによる柔軟なプロジェクト管理
- 作者: クリントン・キース,江端一将
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2012/08/29
- メディア: 単行本
- 購入: 5人 クリック: 22回
- この商品を含むブログ (13件) を見る
- 作者: Cem Kaner,James Bach,Bret Pettichord,テスト技術者交流会
- 出版社/メーカー: 日経BP社
- 発売日: 2003/04/22
- メディア: 単行本
- 購入: 15人 クリック: 246回
- この商品を含むブログ (49件) を見る
白黒バイザーを読もうと薦められたり。
- 作者: ボーリスバイザー,Boris Beizer,小野間彰,石原成夫,山浦恒央
- 出版社/メーカー: 日経BP社
- 発売日: 1997/08/26
- メディア: 単行本
- 購入: 3人 クリック: 59回
- この商品を含むブログ (12件) を見る
- 作者: ボーリスバイザー,Boris Beizer,小野間彰,山浦恒央
- 出版社/メーカー: 日経BP社
- 発売日: 1994/02/26
- メディア: 単行本
- 購入: 6人 クリック: 85回
- この商品を含むブログ (19件) を見る
Functional Functionalしたり。
- 作者: Miran Lipovača,田中英行,村主崇行
- 出版社/メーカー: オーム社
- 発売日: 2012/05/23
- メディア: 単行本(ソフトカバー)
- 購入: 25人 クリック: 580回
- この商品を含むブログ (51件) を見る
- 作者: Joe Armstrong,榊原一矢
- 出版社/メーカー: オーム社
- 発売日: 2008/02/23
- メディア: 単行本(ソフトカバー)
- 購入: 8人 クリック: 284回
- この商品を含むブログ (96件) を見る
あとは、HaskellやScala(z)のモジュールやクラスをF#に移植できないかひたすら考えたり、新卒研修課題をErlang+F#で提出して迷惑かけたりしていました。
あ、勉強会での10分以上の発表を行うようになったのもこの時からですね。そのきっかけをくださったTDDBC岡山運営メンバーの方々には、今でもとても感謝しています。
もう一つ、書籍のレビューにも初めて参加させていただきました。
JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)
- 作者: 渡辺修司
- 出版社/メーカー: 技術評論社
- 発売日: 2012/11/21
- メディア: 単行本(ソフトカバー)
- 購入: 14人 クリック: 273回
- この商品を含むブログ (65件) を見る
@shuji_w6eさん、貴重な機会をくださりありがとうございました。とても勉強になりました。
4月から今
気がついたらF# MVPになっていたり、もみあげと呼ばれるようになっていました。
そして、面白いメンバーとの遭遇を経て今の状況にあります。
新卒で入社した会社を8か月弱で辞めてしまったのは、他者からすれば色々と言いたいこともあるかもしれません。
が、今は後悔していませんし、だいぶ後になって後悔するかもしれませんが改めて納得することでしょう。私はそういうヤツなので。
まぁ、忙しかったりバタバタしてしまったりで、正直前よりもインプットはできていなかった…のは反省ですね。
Purely Functional Data Structures
- 作者: Chris Okasaki
- 出版社/メーカー: Cambridge University Press
- 発売日: 2013/08/02
- メディア: Kindle版
- この商品を含むブログを見る
- 作者: Bill Karwin,和田卓人(監訳),和田省二(監訳),児島修
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/01/26
- メディア: 大型本
- 購入: 9人 クリック: 698回
- この商品を含むブログ (36件) を見る
Team Geek ―Googleのギークたちはいかにしてチームを作るのか
- 作者: Brian W. Fitzpatrick,Ben Collins-Sussman,角征典
- 出版社/メーカー: オライリージャパン
- 発売日: 2013/07/20
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (15件) を見る
- 作者: 高橋晶,安藤敏彦,一戸優介,楠田真矢,道化師,湯朝剛介
- 出版社/メーカー: 技術評論社
- 発売日: 2013/05/18
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (11件) を見る
なぜ学ぶか
まだまだ学ぶべきことは多いですし、やってみるべきだよねと思うことは多々あります。
では、なぜ学んだり試してみたりするのでしょうね?
振り返ってみると、私はやはり「誰かと技術的な話をしたい/聞きたい」に尽きるようです。仕事のためというのは確かにありますが、それ以外の部分が大きい。
時に笑顔で、時に真剣に技術的な話ができる、それは素敵なことだなと思うわけです。
そういうわけで、私は学び続けるのでしょう。
というわけで、いつも楽しい話をしてくださる皆様、私の話を聴いていてくれる皆様、ありがとうございます。これからも頑張るます!
さいごに
読みかけや頂き物を晒すことで年末追い込みメソッドを発動しておきます。
- 作者: Richard Bird,山下伸夫
- 出版社/メーカー: オーム社
- 発売日: 2012/10/26
- メディア: 単行本(ソフトカバー)
- 購入: 3人 クリック: 28回
- この商品を含むブログ (4件) を見る
組織パターン (Object Oriented SELECTION)
- 作者: James O. Coplien,Neil B.Harrison,ジェームス・コプリエン,ニール・ハリソン,和智右桂
- 出版社/メーカー: 翔泳社
- 発売日: 2013/08/06
- メディア: 大型本
- この商品を含むブログ (9件) を見る
- 作者: 牛尾剛
- 出版社/メーカー: 日経BP社
- 発売日: 2013/02/28
- メディア: 単行本
- 購入: 18人 クリック: 194回
- この商品を含むブログ (13件) を見る
.NETのクラスライブラリ設計 (Microsoft.net Development Series)
- 作者: Krzysztof Cwalina,Bard Abrams,藤原雄介
- 出版社/メーカー: 日経BP社
- 発売日: 2009/12/23
- メディア: 単行本
- 購入: 10人 クリック: 603回
- この商品を含むブログ (34件) を見る
C#プログラマのための.NETアプリケーション最適化技法 (Programmer's SELECTION)
- 作者: Sasha Goldshtein,Dima Zurbalev,Ido Flatow,サシャ・ゴルドシュタイン,ディマ・ズルバレフ,イド・フラトー,株式会社プロシステムエルオーシー
- 出版社/メーカー: 翔泳社
- 発売日: 2013/07/23
- メディア: 大型本
- この商品を含むブログ (4件) を見る
おまけ
しかし息抜きも重要なので、気が乗らなければ休みましょう。
そして積まれていくゲームとラノベは数知れず…
愛知県のどこかで働きます
明日からPCがネットに接続できない日々になるので、今のうちに次の行き先を書いておきます。
次の住処は愛知県のどこかです。名古屋國ではありません。なので、まだ「なごやこわい!」と言ってもよいはずっ。
おしごとは?
Twitter上ではバレバレだったみたいですが、名古屋でソフトウェア開発に携わる予定です。
新卒でよくこのタイミングで転職(したね | できたね)
あとでかく(そんなに書くことがないともいう…)
まともな引越し日程を組みなさい
契約やらなんやらから引越しまでを2週間で行うべきではなかったですね、反省しています(2日で荷造りは死ぬかと思った)。
まとめ
これからも一人のプログラマとして、F# loverとして、あるいはぺんぎんとして、もしくはもみあげ(概念)として生きるので、遭遇した際にはよろしくお願いします。