2. コルーチンでeffectを実装しようと思ったらshift/resetがほしいな~
3. shift/resetを実装するのにcallCCがほしいな~
4. 単純なcallCCの実装なら簡単だけど、kotlinx.coroutinesの非同期処理と協調させようと思ったらとても難しい~ ←いまここ
2. コルーチンでeffectを実装しようと思ったらshift/resetがほしいな~
3. shift/resetを実装するのにcallCCがほしいな~
4. 単純なcallCCの実装なら簡単だけど、kotlinx.coroutinesの非同期処理と協調させようと思ったらとても難しい~ ←いまここ
うまく型を考えれば、型によって実装の一意性を保証できて、多くの場合で実装を省略できるのではないか?
うまく型を考えれば、型によって実装の一意性を保証できて、多くの場合で実装を省略できるのではないか?
たまにあれこれプロセス置換でいいじゃんってなる
たまにあれこれプロセス置換でいいじゃんってなる
```kotlin
suspend fun <T> with(
block: (context(T) () -> Unit) -> Unit,
) {
return suspendCoroutine { cont ->
block {
cont.resume(Unit)
}
}
}
```
```kotlin
suspend fun <T> with(
block: (context(T) () -> Unit) -> Unit,
) {
return suspendCoroutine { cont ->
block {
cont.resume(Unit)
}
}
}
```
内部的にはジェネリクスを使ってるのかな
内部的にはジェネリクスを使ってるのかな
undafeに首を突っ込んだ瞬間CかC++で良くねってなったけど、これは用途が悪いんだろう
fat pointerにいつまで経っても慣れないけど、どうしてpointer側でvtableのアドレスを持つだろうな
undafeに首を突っ込んだ瞬間CかC++で良くねってなったけど、これは用途が悪いんだろう
fat pointerにいつまで経っても慣れないけど、どうしてpointer側でvtableのアドレスを持つだろうな
cargoもとてもいい
cargoもとてもいい
一段落したらライブラリ書くかも
www.w3.org/TR/vc-data-m...
www.w3.org/TR/vc-data-i...
www.w3.org/TR/vc-jose-c...
一段落したらライブラリ書くかも
www.w3.org/TR/vc-data-m...
www.w3.org/TR/vc-data-i...
www.w3.org/TR/vc-jose-c...
play.haskell.org/saved/vZ40pL9X
play.haskell.org/saved/vZ40pL9X
```javascript
type PartiallyRequired<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;
```
```javascript
type PartiallyRequired<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;
```
iconbu.com/illust/4728
iconbu.com/illust/4728
今どうなのかは分からないけれど……
今どうなのかは分からないけれど……
```Haakell
class (Functor f, Functor g) => f -| g
| f -> g, g -> f where
counit :: f (g a) -> a
unit :: a -> g (f a)
leftAdjunction :: (f a -> b) -> a -> g b
rightAdjunction :: (a -> g b) -> f a -> b
```
```Haakell
class (Functor f, Functor g) => f -| g
| f -> g, g -> f where
counit :: f (g a) -> a
unit :: a -> g (f a)
leftAdjunction :: (f a -> b) -> a -> g b
rightAdjunction :: (a -> g b) -> f a -> b
```