本ページは、"関数プログラミング交流会"の発表者募集に関するページです。 参加登録に関してはこちらのページからお願いします。
本イベントでは、函数プログラミングに関する学術的、実践的な知見の共有を目的とした発表を募集しています。
本ページは、"関数プログラミング交流会"の発表者募集に関するページです。 参加登録に関してはこちらのページからお願いします。
本イベントでは、函数プログラミングに関する学術的、実践的な知見の共有を目的とした発表を募集しています。
[<AbstractClass>] | |
type HList<'A when 'A :> HList<'A>>() = | |
abstract member Extend<'E> : 'E -> HCons<'E, 'A> | |
abstract member Extender<'E> : unit -> Apply<unit, 'E * 'A, HCons<'E, 'A>> | |
and HList private () = | |
static member Cons<'E, 'L when 'L :> HList<'L>>(e, l) = HCons<'E, 'L>(e, l) | |
and HCons<'E, 'L when 'L :> HList<'L>>(e: 'E, l: 'L) = | |
inherit HList<HCons<'E, 'L>>() |
type SimpleSequenceBuilder() = | |
member __.For(source, body) = | |
seq { for v in source do yield! body v } | |
member __.Yield(()) = Seq.empty | |
member __.Yield(item) = seq { yield item } | |
[<CustomOperation("apply", AllowIntoPattern=true)>] | |
member __.Apply(source, case) = seq { yield! source; yield case } | |
[<CustomOperation("print")>] | |
member __.Print(source: _ seq, [<ProjectionParameter>]f: _ -> unit) = | |
printfn "%A" source |
type IHoge<'T> = | |
abstract member Foo: int -> 'T | |
type Hoge() = | |
interface IHoge<unit> with | |
// compile error | |
// stdin(18,15): error FS0017: メンバー 'Foo : int -> unit' には、対応する抽象メソッドをオーバーライドする正しい型がありません | |
member __.Foo(_) = () |
ジェネリックに関しては 3.0 と 3.1 で大きな違いはないはず
この記事は [http://connpass.com/event/9758/:title] の初日の記事です。
12月になってしまいましたね、進捗どうですか?私は駄目です。
タイトルは"コンピュテーション式の Tips"となっていますが、中身は Basis.Core や <a href"https://github.com/persimmon-projects/Persimmon>"Persimmon 内で使われているコンピュテーション式の実装方法を勝手に紹介するというだけです。
この記事は 2014/12/01 JST 現在書きかけです。 よって、後々更新したときのために gist で diff を残しておきます。
1 | |
2 | |
あぁ^~ | |
4 | |
こころが | |
あぁ^~ | |
ぴょんぴょんするんじゃ^~ | |
8 | |
あぁ^~ | |
こころが |
open System.Reflection | |
type Line1 = Line1 | |
type Line2 = Line2 | |
type Line3 = Line3 | |
type Line4 = Line4 | |
type Line5 = Line5 | |
type Line6 = Line6 | |
type Line7 = Line7 | |
type Line8 = Line8 |