Skip to content

Instantly share code, notes, and snippets.

@pocketberserker
pocketberserker / fpmeetup-2015-cfp.md
Last active August 29, 2015 14:22
関数プログラミング交流会 発表者募集要項

関数プログラミング交流会 発表者募集要項

本ページは、"関数プログラミング交流会"の発表者募集に関するページです。 参加登録に関してはこちらのページからお願いします。

概要

本イベントでは、函数プログラミングに関する学術的、実践的な知見の共有を目的とした発表を募集しています。

応募手順

@pocketberserker
pocketberserker / gist:2d8cad2448fc4dc1bb25
Created May 31, 2015 20:14
Pure F# で HList を実装しようとしたが…型推論に阻まれる
[<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>>()
@pocketberserker
pocketberserker / PersimmonProject.md
Last active August 29, 2015 14:18
Persimmonプロジェクト紹介

Persimmonシリーズの紹介

自己紹介

icon

  • なかやん・ゆーき / ぺんぎん / もみあげ
  • @pocketberserker / id:pocketberserker
@pocketberserker
pocketberserker / FreeMonad.md
Last active November 7, 2019 05:23
基礎から学ばないFree Monad

基礎から学ばないFree Monad

自己紹介

icon

  • なかやん・ゆーき / ぺんぎん / もみあげ
  • @pocketberserker / id:pocketberserker
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(_) = ()
@pocketberserker
pocketberserker / FSharpGeneric.md
Last active August 29, 2015 14:13
富山合同勉強会 http://toyama-eng.connpass.com/event/9372/ ジェネリクス談義用メモ

この記事は [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 を残しておきます。

@pocketberserker
pocketberserker / output.txt
Last active March 20, 2016 01:23
http://www.paraiso-lang.org/ikmsm/books/c86.html の第4章の最初のほうが元ネタ
1
2
あぁ^~
4
こころが
あぁ^~
ぴょんぴょんするんじゃ^~
8
あぁ^~
こころが
@pocketberserker
pocketberserker / Savannah.fs
Created November 5, 2014 04:00
コンピュテーション式でAAを表現したかったのじゃ…
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