Quantcast
Channel: HaskellとF#について書くmatarilloの日記(アーカイブ)
Browsing latest articles
Browse All 30 View Live

ポーカーの役判定(第10回オフラインリアルタイムどう書くの参考問題)

haskellグループなのにF#のエントリ。大目に見てね。F#の練習に http://qiita.com/items/d819d1e5f2378317511eの問題を解いてみた。...

View Article


バス代の計算(第9回オフラインリアルタイムどう書くの問題)

http://qiita.com/items/84255ac417ef25069a3bhttp://qiita.com/items/7385db8cce051cb499d7

View Article


ビットボンバーマン(第8回オフラインリアルタイムどう書くの問題)

http://qiita.com/items/709d61dff282cff7a890http://qiita.com/items/463311ff1ce4dd2cc943

View Article

Haskellのポイントフリー

読みにくいからやめてほしい。 自己満足以外に実用的な意味があるのかどうか。 そもそも、セクションとかflipとかを使いまくらないと実現できないわけでしょう? unlambdaやlazy kは実用言語じゃないでしょう?

View Article

Google Code Jam Japan 2011 予選問題B

日にちを逆から計算するというのは早めに気づいたのだけど、Largeを解けるようにするのにえらく時間がかかった。ループをk回ずつまわさないようにするために、消費期限が長いものから順に何杯ずつ飲むのかを計算して掛け算する方針。

View Article


Poor Mans' Type Classes

.NETのCLRに高階ジェネリクス(型クラス、高カインド)を!という要望はMSから断られているわけだけども。回答にある「Steffenがコメント欄に書いたようなやり方でエンコードできるよ」というのが気になった。時間を見つけてこのコードを勉強してやろう。(おまけ)...

View Article

ジェネリックレコード型

前回の記事のど頭のこれtype'a Num={ ... }はジェネリックレコード型の定義のようだ。'a listとか'a optionみたいに'a Numを定義している。 ところで、Num<'a>と書くのと同じなんだろうけど、そう書かない理由は何だろう。何か使い分けでもあるのかな。

View Article

前回の記事

個々の型に適合する関数群の実装をレコードのいちインスタンスとして渡してるわけね。サンプルでは、intならint、floatならfloat用の実装を用意している。これって目的は果たすのかな?

View Article


関数適用と関数合成

では、こんな関数があったとき replicate 2 (product (map (*3) (zipWith max [1,2] [4,5]))) 関数合成をして、まっとうな記述をするとこう書けるらしい。 replicate 2 . product . map (*3) $ zipWith max [1,2] [4,5]...

View Article


F#の立ち位置

いげ太さんがときどきぼやいてたかと思いますが(追記: 不正確でした。いげ太さんからのコメントは下に)、「F#はなーんかMSに冷遇されてねえ?そのせいか、C#からF#に乗り換える人も少なくね?」みたいな話があります。...

View Article

OKWaveの質問

Graham Hutton著「プログラミングHaskell」の第8章関数型パーサーを勉強しています。 本の中にあるソースコードではdo記法などが使えないため、動きません。 サポートページにプログラムがあります。そのプログラムの意味がよくわかりません。 教えていただけないでしょうか。プログラミングHaskellでHaskellを学んだ私が来ましたよ。...

View Article

貧者の型クラス

去年、こんなのをメモしてた。http://haskell.g.hatena.ne.jp/matarillo/20130524/1369369774http://haskell.g.hatena.ne.jp/matarillo/20130527/1369636675これってオダスキー先生のこれ↓がベースなのか!http://lampwww.epfl.ch/~odersky/talks/wg2.8-bo...

View Article

遅延評価とfoldr/foldl

Haskellの遅延評価のイメージは「まず式を立てる(サンクを作る)けど、値の評価はまた別の話」。foldrは foldr f acc [x0, x1, x2, x3, ... , xn] = x0 `f` (foldr f acc [x1, x2, x3, ... , xn]) = x0 `f` (x1 `f` (x2 `f` (x3 `f`...`f` (xn `f` acc) ... )))...

View Article


モナド構文糖

モナドが便利で、モナド構文糖が便利だってことには特に異論がないんだけど、 それならそれでHaskellのdo-returnみたいに逐次実行に似せるほうが絶対にいいと思う。 そうでなければ、もっとこう、bindとかunitとかそういう語彙を前面に出してほしい。つまり、Scalaのように、for-yieldとかflatMapというリスト中心の語彙でモナドを扱うのは、どう考えてもキモイ。...

View Article

kenokabeさん

kenokabeさんは、自説の組み立て方、参照する先行研究や書籍が普通ではないので突っ込まれやすいにも拘わらず自説が正しいという態度を崩さない、知人だったらわりと面倒なお方だなという印象なんだけど、ここに書いてたことにはそんなに違和感ないな。http://kenokabe-techwriting.blogspot.jp/2015/04/amazon102-93.htmlむしろ書評を書いた人が、ラムダ...

View Article


Image may be NSFW.
Clik here to view.

猫かわいい

http://www.meetup.com/FunctionalKats/

View Article

Minority's hello, worldにF#で挑戦

CodeIQにMinority's hello, worldという問題が出ていました。問題が見れなくなっているので引用すると、こういうもの。■問題の概要「hello, world」と出力するプログラムを提出して下さい。 提出されたプログラムで使われている文字を、全挑戦者について集計します。 各文字には「(その文字を利用した挑戦者の人数)の2乗」というポイントが割り当てられます。...

View Article


演算子のオーバーロード #1

http://stackoverflow.com/questions/11150947/f-overloaded-operater-with-floats-not-working-with-other-floats/11152288#11152288F#の ?<-演算子は「動的プロパティに値を設定する演算子」なんですが、なんでそれがここに?...

View Article

演算子のオーバーロード #2

F#の ?<-演算子(動的プロパティに値を設定する演算子)はわりとキモいことがわかってきた。まずはこんな感じでグローバルな演算子を定義してみる。let(?<-)(d:#IDictionary<'K, 'V>) k v = d.[k]<- v まず、キーとして適当な判別共用体を食わせてみる。typeMyUnion=A|B|Cofintlet testUnion =let...

View Article

演算子のオーバーロード #3

さて、?<-はいったん置いておいて、演算子のオーバーロード解決を勉強した。F# の演算子定義は2通りのパターンがある。1つは(C#と同様に)クラスなどのスタティックメンバーとして書くもの。typeMyRecord={ x: int; y: int}with static member (+)(left: MyRecord, right: MyRecord)={ x = left.x +...

View Article

演算子のオーバーロード #4

グローバルレベルで定義された演算子が演算子のオーバーロードを隠してしまう。それはわかった。それならそれで、グローバルレベルで定義された演算子は多相(ジェネリック)にできないのだろうか。結論から言うとできる。ただし気を付けなければならないことがある。まず、関数の場合は山かっこ(<および>)を関数名の直後に置ける。let addCount<'a when'a...

View Article


演算子のオーバーロード #5(完結編)

ちょっと間が空いた。さて、ここまでを踏まえれば、最初の記事に載せたhttp://stackoverflow.com/questions/11150947/f-overloaded-operater-with-floats-not-working-with-other-floats/11152288#11152288はほぼ理解できる。組み込みのfloatとユーザー定義のvector2の両方で使えるよう...

View Article


F#のWebアプリケーションフレームワーク

http://fsharp.org/guides/web/に載ってる中でちょっと気になったやつをメモ。Suave.IOはノンブロッキングでクロスプラットフォーム。ほうほう。結構作りこまれてる様子。 http://suave.io/typeSuaveTask<'a>=Async<'a...

View Article

Image may be NSFW.
Clik here to view.

本質ではない。

F# 不況側は何かと「C#はここがダメ!F# はC#よりイイ!」って言うけど、F#の成果がぜんぜんアピールされてないというのは真実。ほかのはやりの言語は自身をわざわざC#なんかと比較したりしないし、そういうこというのF# ぐらいしかないよね。 F#からWindowsアプリ作るスケルトンはないんですかね 2015-09-1314:32:18via TweetDeckF#はVisual...

View Article

Re: お手軽で実用的なジェネリックスへの道は遠い

「TypeScriptジェネリックス:可能性が見えると不満がつのる」において、クラス定義や関数定義に型パラメータを渡せるだけでは、ジェネリック・プログラミングは難しいと述べました。そのときの例題はリストの総和だったのですが、より簡単な累乗(ベキ乗、power)計算を例にしてもう一度問題点を説明します。最近のプログラミング言語はジェネリックス機能を持っているものが多いですが、言語の進化に伴って後から付...

View Article


Re: コンピュータは「掛け算は足し算とする」を理解できるか

行列計算はともかくとして、min-plus半環そのものを定義します。複数のプリミティブ数値型に対応するには?と読みました。新しい演算子、たとえば...

View Article

演算子オーバーロードとユーザ定義型変換とカスタム数値リテラルとジェネリック単位元と

(12/8追記: 檜山さんの新しい記事を受けて、別バージョンを書きました。https://gist.github.com/matarillo/d9861bcce64b4b6ae4da明日には新しいブログエントリーを書くつもりです。)http://haskell.g.hatena.ne.jp/matarillo/20151202/1449027369の続き。もともとの...

View Article

多相リテラルはないけど、演算子オーバーロードとユーザ定義型変換とカスタム数値リテラルとジェネリック単位元と

この記事はF# Advent Calendar...

View Article

もしミスチルがF#だったら

love : 'Ego->'Ego-> seq<int>when'Ego : comparison 記念に。

View Article



情報隠蔽とモジュールとシグネチャファイル (F# Advent Calendar 2016)

いまさらですが、2016年12月のF# Advent...

View Article
Browsing latest articles
Browse All 30 View Live


Latest Images