Skip to content

Instantly share code, notes, and snippets.

View p-pavel's full-sized avatar
💭
In pursuit for the meaning

Pavel Perikov p-pavel

💭
In pursuit for the meaning
View GitHub Profile
@p-pavel
p-pavel / DirectBufferProg.scala
Last active June 8, 2019 10:24
О свободных монадах
/*
О Свободной Алгебре.
--------------------
Возможно, кому-то это будет интересно, или даже проложит путь в Scala, которая умеет в котов.
Проблема: существует callback из внешнего мира, который передает нам DirectBuffer
DirectBuffer это, грубо говоря, кусок памяти. Он предоставляет удобные операции для доступа к этому куску.
Но сам кусок не будет валиден после возврата из коллбэка.
@p-pavel
p-pavel / DirectBufferProg.scala
Created June 8, 2019 09:08
Свободные монады спешат на помощь
/*
О Свободной Алгебре.
--------------------
Возможно, кому-то это будет интересно, или даже проложит путь в Scala, которая умеет в котов.
Проблема: существует callback из внешнего мира, который передает нам DirectBuffer
DirectBuffer это, грубо говоря, кусок памяти. Он предоставляет удобные операции для доступа к этому куску.
Но сам кусок не будет валиден после возврата из коллбэка.
@p-pavel
p-pavel / Elimination.scala
Last active February 25, 2017 13:06
Solving tagged types problem with elimination
/** Для решения проблемы с тем, что pattern matching в Scala теряет path dependent types
*
* @see [[https://gist.github.com/p-pavel/24e63bb9f40ea95fd988787a35ad4d80 this gist]]
* можно воспользоваться классикой -- introduce/eliminate
*/
object Elimination {
import language.higherKinds
@p-pavel
p-pavel / TypeIndexing.scala
Created February 23, 2017 09:15
path dependent types and unapply
trait A {
type T
val t : T
}
object A {
def unapply(arg: A): Option[arg.T] = Some(arg.t)
}
def use(a : A) = a match {