サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
おみそ汁
zecl.hatenablog.com
F# Advent Calendar 2016 の 22日目の記事です。 TypeProviderについては以前、 型プロバイダー(TypeProvider)のちょっとしたアレコレというのを書きました。 書いたのはそーとー前ですが、今でも割と役に立つかもしれない以下の話題について扱っているので、気になるものがあればどうぞ。 - 型プロバイダーに渡すことができる静的引数んの種類 - 型プロバイダーの実行部分は部分的な制限がある - 他のDLLに依存する型プロバイダーを作る - 他のNuGetパッケージに依存した型プロバイダーを作ってNuGetで配布するときのやり方 - 型プロバイダーが参照するファイルの更新チェックを実装する - 消去型と生成型 さて。この記事は、TypeProviderに関する役立つものから役立たないものまで雑多な小ネタをいくつか適当に書いていきます。何かひとつでも引っかか
@ufcpp さんにお話しをいただいて Comm Tech Festival に参加してきました。ありがとうございました。 comuplus.doorkeeper.jp 「open FSharp」というタイトルで発表させていただいたのですが、時間配分がうまくいかずにスライドの最後まで紹介することができませんでした。申し訳ありません(はずかしい)。 「続きはWebで。」とお約束をしていたので、こちらにまとめます。使用したスライドをそのまま公開することも考えましたが、それだと内容が伝わりにくくてあまり価値がなさそうかなと思ったのと、変な誤解をされる恐れもあると考えたので、発表時に話した内容に簡単な補足を加えたり、ときにはざっくり省いたりしたかたちでこちらにまとめることにしました。 時間オーバーしただけあってだいぶ長いです(ポエム)。 セッションを聞いていただいたかたは、続きのみどうぞ @may
これは F# Advent Calendar 2014の延長戦、 30 日目の記事です。 書いたきっかけ @zecl ML Advent カレンダーに書いてくださいよーw F#の人達は知ってるけど、MLな人は知らないとかあるかもしれないですし。— h_sakurai (@h_sakurai) 2014, 12月 10 結局、25日に間に合いませんで。ゆるふわ #FsAdvent に急遽参加しました。そんなわけで、ML Advent Calendar 2014も合わせてどうぞ。 この記事は非常に誰得でニッチな内容を扱います。ほとんどの場合役には立たないでしょう。F# らしい成分もあまりありませんので、まあ適当に流してください。 UniFSharpとは? UniFSharpは、私が無職だった(ニートしていた)ときに作成した Unityエディタ拡張 Assetです。割と簡単に導入することができま
一応、型プロバイダー(TypeProvider)のとりとめもない話 の続き。 ちょっと草植えときますね型言語Grass型プロバイダーを作った後、少し思い違いをしていた事に気付いたのが事の発端。この記事では、FsBulletML.TypeProvidersを作成する過程で得た、型プロバイダーについてのちょっとしたアレこれについて書いてみる。 オレは型プロバイダーに対する思い違いをしていた(雑魚) FsBulletMLという弾幕記述言語ライブラリを作っています。このライブラリでは、弾幕記述言語BulletML(XML形式等)を読み込んで弾幕を表現する判別共用体(内部DSL)の型を生成するということをやっています。構想の段階で BulletML(XML形式等) に判別共用体(内部DSL)の型を付ける型プロバイダーの提供も考えていたが、型プロバイダーでは判別共用体を作ることができないという理由から
この記事はF# Advent Calendar 2013の20日目です。 遅ればせながらThe Last of Usをちびちびとプレイ中。FF14のパッチ2.1が先日リリースされ、メインジョブ弱体化にもめげず引き続き光の戦士としてエオルゼアの平和を守り続けている今日この頃。艦これは日課です。はてなブログに引っ越してきて一発目(ブログデザイン模索中)です。気付けば半年もブログを書いていませんでした(テイタラク)。今年はあまり.NET関係の仕事に携わることができずに悶々としておりましたが、急遽C#の仕事が舞い込んできました。年末はいろいろとバタバタするものです。少しの間ホテル暮らしなのでゲーム(据置機)できなくてつらいです。わたしは大晦日にひとつの節目を迎えます。記憶力、体力、集中力...多くのものを失ったように思います。アラフォーいい響きです(白目)。 上の動画の弾幕は次のBulletml判
ジェネリックでダウンキャストによる問題を回避 まず、ダウンキャストをしている問題のコード using System; namespace ConsoleApplication1 { public abstract class Hero { public Hero GetMyself() { return this; } } public class Ultramen : Hero { public string Name { get { return "ウルトラマン"; } } } public class KamenRider : Hero { public string Name { get { return "仮面ライダー"; } } } class Program { static void Main(string[] args) { Ultramen u = new Ultram
F# コンパイラのソースを読んで はぇ〜さん(@haxe) とtwitterにて、以下のようなやり取りがありました。 ところで #fsharp の for m in Regex.Matches(input, pattern) do () はGetEnumerator()をしてくるわりに、m : Match に解決してくれるのはなんでだろう? 仕組みがわからにあ 2013-06-20 11:03:05 via web @haxe F# さんがベターな型をよしなに探してくれているからですね。このあたりのソースからたどって全体を見てみると「にやり」とできるかも(!) URL 2013-06-20 11:48:37 via Silverbird M to @haxe @zecl IEnumerable<T>を実装してないのに、どうやって見つけてるのかな?って話なんです。githubは見てますよん
元ネタ 昼食時に店で流れていた、大事MANブラザーズバンド「それが大事」の歌詞が、あまりに繰り返しばかりなので、状態遷移図を作りました。どうぞご利用下さい。 http://youkoseki.com/soregadaiji/ 「それが大事」にマルコフ連鎖を適用してみる https://www.evernote.com/shard/s70/sh/71947f67-ee6c-405f-92a2-1d64fd631639/2d9397138827808cbc21c36c9389f642 マルコフ連鎖で「それが大事」っぽい歌詞を自動生成する http://vilart.sakura.ne.jp/daijiman.html 自動生成された文字列が違和感なく連鎖するのがいいね!ネタのチョイスが面白くってちょっと書いてみたくなった。大事MANブラザーズバンドの大ヒット曲「それが大事」っぽい歌詞をマルコフ
全国1億2千万人の F# ファンの皆様いかがお過ごしでしょうか。理解できるわけもないとわかっていながらも調子に乗って「型システム入門 プログラミング言語と型の理論」を買ってしまった系の痛いおじさんです。10年後、20年後にわかることができてたらいいなくらいのノリで読んでいます。が、早くも挫折の兆しです。歩道の雪はまだまだ残ってるながらも極寒の地もようやく春めいてきました。最近やけに眠いです。春眠暁をなんとやら。プライベートな時間に勉強をするモチベーションがあまりないので、最近は映画観たりゲームばっかりやっています(下り坂)。 読む・・・!読むが・・・今回まだその時と理解度の指定まではしていない。そのことをどうか諸君らも思い出していただきたい つまり・・・我々がその気になれば理解は10年後、20年後ということも可能だろう・・・ということ・・・! 2013-03-04 09:07:42 via
twitter や facebook こういった SNS があなたの仕事の邪魔をしている。いつ仕事をするか?その合間でしょ?(逆でしょ!) そんな今日この頃ですがみなさんいかがお過ごしでしょうか。 F# HACKATHON in sapporo [2013/03/23(土)] は、リモートでの参加も大歓迎らしいので、ドシドシ参加するといいと思います! 最近、「VS 魂 100 連発」とゆー企画をマイクロソフトのエバさんたちがやっていますね。かなりゆるーい感じで超入門的な内容を中心にさまざまな観点から Visual Studio の使い方を解説してくれています。たぶんおそらくめいびー F# に関する話題はご紹介いただけないであろうことは想像に難しくなく。気まぐれではありますが VS魂単発@F# 的な何かです。すべての F# ユーザーが今すぐ導入すべき拡張機能であるところの、F# snippe
年末年始の連休から中五日あっての三連休で、正月ボケをぶり返してしまいそうな今日この頃ですが、いかがお過ごしでしょうか。 すごいH本こと、書籍「すごいHaskellたのしく学ぼう!」の最後のほう、第14章「もうちょっとだけモナド」の 14.8 (P356)にて、素朴な確率モナドが紹介されています。 すごいHaskellたのしく学ぼう! 作者: Miran Lipovača,田中英行,村主崇行出版社/メーカー: オーム社発売日: 2012/05/23メディア: 単行本(ソフトカバー)購入: 25人 クリック: 580回この商品を含むブログ (51件) を見る 普通、モナドは作りたいと思って作るものではありません。むしろ、とある問題のある側面をモデル化した型を作り、後からその型が文脈付きの値を表現していてモナドのように振る舞うと分かった場合に、Monad のインスタンスを与える場合が多いです。
この記事は、F# Advent Calendar 2012 の12日目です。ひとつ前の記事は@katayama_kさんの「スキャナが出力したPDFを、出力デバイスに合わせて変換しよう-F#マスターへの道」です。ありがたいことにソースコードを公開してくださっているので、iTextSharpを使ってPDFを扱いたい場合に参考になりそうです。 龍が如く5、NewスーパーマリオブラザーズU、などプレイしたいゲームが盛りだくさんだけど、ぜんぜんやる時間が取れない今日この頃ですが、みなさんいかがお過ごしでしょうか。 この記事では、F# と MonoGame でゲームを作ろう(Mac編)という話題を扱います。F#をゲーム制作に実用してみようという話です。関数型楽しい。ゲーム作るの楽しい。ならば組み合わせない手はない! いわゆるひとつの「カツカレー理論」を採用しましたが、あなたを満足させられるような 実用
Excelをごにょごにょしていると、Excelの79列目のカラム名が「CA」だとかってのを、 取得したくなることがある。そんなときのためのブツ。こーゆーのは再帰でうまく表現できますね(^ω^) using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApplication1 { static class Program { static void Main() { Enumerable.Range(1, 16384).Select(n => n.ToAlphabet()).ForEach(s => Console.WriteLine(s)); Console.ReadLine(); } /// <summary> /// Excelのカラム名的なアルファベット文字列へ変換します。
もう1週間以上前になりますが、Code2012という合宿イベントに参加してきました。いろいろな方との交流あり、温泉あり、クラウディアさんありと大変楽しかったので、ぜひ来年も参加したいです。 で、VBerのくせにそちらで「5分じゃわからないモナド - 圏論なんて華麗にスルー」というタイトルでLTをしてきました。なぜか、宴会の後にLTをやるという謎なタイムスケジュールとなっていたため、十分にアルコールが回った状態でお話をしました。時間通りにジャスト5分で話しきれたのは奇跡です。来年はそのあたり考慮してもらいたいかも...しれません。LTの後にいくつか質問をいただいて、モナドや圏やF#についてなんだか結構な時間追加でしゃべったような気がします。 LTの要点としましては、「モナドを使うのに圏論の知識は必要ない。」という意見はまったくそのとおりなのだけど、だからといって関数型言語を学ぶ人が圏論に触れ
今月末の7月28日、29日と、Code2012という合宿イベントに参加する予定です。F#や関数型について語り合える人がいない場合は割とボッチになりそうな気もしていますが...、それならそれで適当に楽しんでこようと思っています。というわけで、いつものように「月末になったらブログ書こう...」と後回しにしていると、なにも書かずじまいで終わっちゃいそうな気がするので、心に余裕のあるうちになんか書いておきます。 「F#の上達法を教えます。パイプライン演算子使え。以上」 2012-07-12 23:31:35 via Silver Bird わたしはこれでF#覚えました。これが上達の鍵です。えっと、割とマジです。 F#でZ会三年生中学受験コース5月のてんさく問題 さて、話はちょっと変わって、「Z会三年生中学受験コース5月のてんさく問題」というのをF#で書いてみます。 元ネタ Z会三年生中学受験コース
発売されてすぐにPSVitaのP4Gをダウンロードしたのだが、どちらかというとエヴィディ・ヤングライフ・VB6♪な生活を送っていてなかなかプレイする暇がなくてつらい。今日はGoAzureのゆーすと見たり、この記事をこしらえていたりな休日を過ごしていましたが、皆さんいかがお過ごしでしょうか。 限定継続と shift/resetプログラミング少し前に書籍「Scala実践プログラミング」のChapter10-2 継続のところ読んでいて、限定継続面白いなー shift/reset プログラミング面白いなーと思っていたので、shift/reset プログラミングについて検索してみました。すると、書籍「プログラミングの基礎」でも有名な、お茶の水女子大学の浅井健一氏の「shift/reset プログラミング入門」が出てきました。いきなり当たりを引いた!今日のおれはツイてるな!(テッテレー)と言う感じで、
デスマプロジェクトに放り込まれて、かなりヤラレていますが、 久しぶりに独りよがりなデザパタ講座です。 今回はGoFデザインパターン以外のパターンを取り扱いたいと思います。 スマートにコードを表現することができ且つ、ケアレスなバグを減らす効能のある、 有用なパターンの1つである「NullObjectパターン*1」をぬるーく解説します。 ■NullObjectパターンの概要■ NullObjectとはその名のとおり、null扱いをされるObjectのことを言います。 つまり、「何もしない、何もできないObject」を意味します。 NullObjectパターンは、なんらかの処理をするにあたり、 呼び出し側でnullチェックをしなくても済むように、 「何もしないクラスのインスタンス」を用意してあげましょうというアイディアのパターンである。 NullObjectは、「役に立たない」ことが目的で、「役
マーチン・ファウラー先生の黒いDSL本(翻訳版)が5月2日に発売されました。遅ればせながら私も最近購入して熟読しているところです。 この本が示すDSLの種類や内容は、あくまでもオブジェクト指向というコンテキストにおいてのものであり、関数型言語によるDSL開発については一切言及はありませんが、まえがきの「本書に欠けていること」の中で「"関数型言語でのDSL"に関する言及はないので、ご了承ください。」というようなお断りがあり、好感が持てます。マーチン・ファウラー先生に限らず、オブジェクト指向の大御所たちも最近の関数型言語流行の流れにはとても敏感になっているようです。実際、ことDSLに関して言うなら、モナディックなパーサ・コンビネータの存在など、確かに関数型言語の方が有利になる点もいくつかあるし、それらについて書籍内に言及がないことを説明するのは良いことだと思う。この本で示されている考え方やパタ
元ネタ 逆FizzBuzz問題 (Inverse FizzBuzz) - 猫とC#について書くmatarilloの雑記 http://d.hatena.ne.jp/matarillo/20120515/p1 面白いなあ / “逆FizzBuzz問題 (Inverse FizzBuzz) - 猫とC#について書くmatarilloの雑記” URL 2012-05-16 12:30:42 via Hatena 逆FizzBuzz問題 解きなおし #c# #FizzBuzz URL 2012-05-16 16:53:01 via Qiita 面白いですねえ。 無理矢理詰め込んでツイートしたけど、F#で140文字ゴルフプログラミングとか割と無茶ですから!(白目 fun x->List.map(fun x->List.map(fun y->x,y)[x..100])[1..100]|>List.co
椎名林檎「自由へ道連れ」をヘビロテしすぎて脳内無限ループしている今日この頃ですが、皆様いかがお過ごしでしょうか。 時事ネタとしては旬を逃した感じですが、簡素なコンプガチャシミュレータをF#で書いてみました。 とは言っても、この記事で伝えたいことはコンプガチャの確率がどうのですとか、実社会におけるコンプガチャの問題点がどうのとかいうような話題を扱うものではなく、安直にモナド則を満たさないコンピューテーション式を作ってしまうよりかは、Identityモナド(恒等モナド)を使ってプログラミングをした方が、見通しが良くモジュール性の高いコードを書くことができるかもしれないよ、という話題を提供します。割とどうでもいい話題ですね。未だガラケーユーザーであり、スマホやソーシャルゲーとはほとんど縁のない私ですが(もちろんモゲマスもやったことない)、気が向いたのでちょっと書いてみました。なお、モゲマスおよび
ドラゴンズドグマが楽しみだったり、しおりを温めていたScala実践プログラミングの読書を再開したりな今日この頃。 ご多聞に漏れずわたくしも五月病なので軽めのネタで。とゆーかですね、FSharpxのステマです。 FSharpxのValidationでFizzBuzz 元ネタ ScalazのValidationでFizzBuzz http://d.hatena.ne.jp/terazzo/20111015/1318692810 続・ScalazのValidationでFizzBuzz http://d.hatena.ne.jp/terazzo/20111018/1318959813 そもそものきっかけはこのあたり えっと。よくわかっていないんですが「scalazのValidationはモナドではない」で、あっていますよね? Applicativeではあると思うのですが。 URL 2012-05
4月14日に札幌で行われた第69回CLR/H勉強会にて、「Retry Monad for Transient Fault Handling - F#とWindows Azure と私 -」と題して、ライトニングトークで発表しました。 Retry monad for transient fault handling View more presentations from zecl1231 Microsoft Enterprise Library 5.0 Integration Pack for Windows Azure(EL5 for Azure)のTopaz および FSharpx を利用してモナドを作りました。Topazを利用する理由は、再利用可能な再試行戦略およびWindows Azure向けの検出戦略が組み込み済みであり、それをそのまま利用したいからです。EL5 for Azur
http://www.asp.net/ ASP.NET MVC4 Betaがリリースされまして、WebAPIいいね!な今日この頃。誰が言ったか、これから求められるIT技術は、Web、クラウド、関数型言語の三本柱らしいです。とは言っても、世の中にはさまざまな技術が溢れています。.NETerなわたしは月並みですが、ASP.NET MVC、Windows Azure、F#を追いかけるつもりです。まぁ、日進月歩の業界ですし、わたし自身飽きっぽかったりするので来年には違うことを言っているかもしれません。最近の私はと言えば、月9ドラマ「ラッキーセブン」でメカオタ少女茅野メイ役を演じている入来茉里さんのファンになりました。スピンオフドラマの「敷島☆珈琲〜バリスタは見た!?〜」も面白い。これからブレイクすること間違いありません。 それはさておき、ASP.NET MVC関連の記事はだんだんと増えてきています
カンスウガタゲンガーは割と見逃しがちだけど、match a with ?と a |> function ?は完全互換ではありません #えふしゃーぷあるある #fsharp 2011-09-02 16:08:23 via web @zecl え?そうなんですか?まったく同じものだと思ってました。。。 2011-09-02 18:08:31 via HootSuite to @zecl 以前、「F#では、パターンマッチを「match x with」と書く流派と「x |> function」と書く流派がございます。」という記事を書きました。 ほぼほぼ置き換えることが可能な、「match a with 〜」と 「a |> function 〜」ですが、 実は完全互換ではありません。これはカンスウガタゲンガーには割と気づきにくい違いかもしれません。 細かすぎて伝わらない程度の違いですが、カンスウガタ
この記事は、F# Advent Calendar 2011の21日目です。 きっかけは、11月19日に札幌で行われた第64回CLR/H勉強会で、愛甲健二さん(@07c00)がお話してくれた「コンピューターに萌えを教えてみたよ」というセッションです。「アダルトサイトの検知」のメカニズムだったり、愛甲さん自身の"萌えの嗜好"をコンピューターに学習させてみるという少しアレゲなテーマでのお話しでしたが、内容はとても真面目で面白かった。見慣れない数式など、その全てを理解することはできませんでしたが、ニューラルネットワークの雰囲気や概要がわかりました。オライリーの「集合知プログラミング」でニューラルネットワークについて少し読んだことがあったり、何となく見聞きしたことはありましたが、基本的な考え方を知ったのはそのときがはじめてです。とても面白くもっと知りたいと思ったので、勉強会の後にモクモクとニューラル
いろいろなリバースのアルゴリズムを見てみましよう。 まずは表題のリバースのアルゴリズムについて、どうぞ。 なんとなくモテようとしている感のあるリバースモテようとして、C#でXOR使ってリバースしている奴がいたんですよ・・(以下略)。 こんな感じで public static string Reverse(string s) { char[] charArray = s.ToCharArray(); int len = s.Length - 1; for (int i = 0; i < len; i++, len--) { charArray[i] ^= charArray[len]; charArray[len] ^= charArray[i]; charArray[i] ^= charArray[len]; } return new string(charArray); } もちろん要件
元ネタ パケットの送受信量 (C#)(F#) - SIN@SAPPOROWORKSの覚書 http://d.hatena.ne.jp/spw0022/20111116/1321437712 F#のwhileにbreakが無いのを知って愕然とした。F#では通常、whileは使用しないのかな? URL 2011-11-16 19:01:55 via Hatena 確かにC#やVB、Javaなどの手続き型言語でのプログラミングに慣れていると、最初はそう思っちゃいますよね。 これぞ「ループでbreak脳の恐怖!」...って、私もその道を通りました。 方法1:再帰を使う open System open System.Net.NetworkInformation let ar = NetworkInterface.GetAllNetworkInterfaces() |>Seq.map(fun n -
F# + XNAでとことんF#よぷよ!してみました 「ダークソウル」で心が折れそうな日々を送っている今日このごろですが、みなさんはいかがお過ごしでしょうか。 F# + XNAで「とことんぷよぷよ」っぽいものを実装してみました(はじめてのXNAゲームプログラミング)。 ただし、意図的、あるいは意図せずに元ネタのそれの仕様とは異なる場合があります。 動画の終盤、PAUSEをしてチート機能を使うことで19連鎖のデモをしています。 第 63 回 CLR/H 勉強会で、F#とXNAを題材にお話します。 日時 : 2011/10/15 (土) 13:30〜18:00(開場 13:00) 場所 : マイクロソフト北海道支店 セミナールーム (札幌市中央区北 5 条西 2 丁目 5 JR タワーオフィスプラザさっぽろ 20F) http://www.microsoft.com/ja-jp/mscorp/b
前回のエントリでモナドについて熱く語りました。今回はゆるいモナドの雑記です。 モナドを利用してFizzBuzz問題を書いてみることで、「モナドってなんなん?なにしてくれちゃってるん?」ということが、 もしかしたら分かるかもしれないよ、という息抜き的なお話です。 FizzBuzz問題から学ぶモナド FizzBuzzをモナドで - トウフ日記 http://d.hatena.ne.jp/nskj77/20070512/1178952068 よりコードを引用します。 data FB a = FB (a, String) instance Monad FB where return x = FB (x, "") m >>= f = bind m f where bind (FB (x, y)) f = let FB (m, n) = f x in FB (m, y ++ n) instance (
次のページ
このページを最初にブックマークしてみませんか?
『Bug Catharsis』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く