Skip to content

Instantly share code, notes, and snippets.

Less is more; more is less.

cybai CYBAI

Less is more; more is less.
Block or report user

Report or block CYBAI

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
topecongiro /
Created Dec 2, 2019
Rust Advent Calendar 2019 の 2日目の記事

Rust の Deref と DerefMut で継承ができると思わない

Rust でオレオレ文字列型を定義して既存コードに散りばめられた String を置き換えたい気持ちになることがあります。

単純に API を追加して事足りる場合、必要な API をトレイトで定義した上で String に実装すれば十分です:

trait PushNewLine {
    fn push_newline(&mut self);

Follow-up to Method on Emulating Higher-Kinded Types (HKTs) in Rust

First off, thanks for all the comments and kind words on the original writeup; I've been meaning to follow up on some of the suggestions and write about the different ways to represent monads (and functors, HKTs, etc) that now exist, but a month of being busy has kind of gotten in the way (mainly with three new kittens!).

And for sure, I do not expect (nor do I want) this to become the norm for production-level Rust: rather, I hope that this can contribute to the foundations of programming with higher-level abstractions in Rust, somewhat like how early template metaprogramming in C++ and typeclass-constraint-unification metaprogramming in Haskell have contributed, perhaps indirectly, to later innovations in their respective languages and ecosystems that were much more reasoned, sound and usable.

Changes, Edits, Refinements

One of the things suggested in the com

emilio / reduce-css.js
Last active Mar 22, 2019
Ever wanted to reduce all the CSS in a test-case to the minimmum? :)
View reduce-css.js
function processContainer(container) {
if (container instanceof CSSSupportsRule)
if (!CSS.supports(container.conditionText))
return false;
if (container instanceof CSSMediaRule)
if (!matchMedia(container.conditionText).matches)
return false;
if ( &&
yelouafi /
Last active Oct 26, 2019
Operational Introduction to Algebraic Effects and Continuations

Algebraic Effects in JavaScript part 1 - continuations and control transfer

This is the first post of a series about Algebraic Effects and Handlers.

There are 2 ways to approach this topic:

  • Denotational: explain Algebraic Effects in terms of their meaning in mathematics/Category theory
  • Operational: explain the mechanic of Algebraic Effects by showing how they operate under a chosen runtime environment

Both approaches are valuables and give different insights on the topic. However, not everyone (including me), has the prerequisites to grasp the concepts of Category theory and Abstract Algebra. On the other hand, the operational approach is accessible to a much wider audience of programmers even if it doesn't provide the full picture.

rayshih / Main.purs
Created Sep 2, 2018
Typelevel N Queen in PureScript
View Main.purs
module Main where
import Prelude
import Effect (Effect)
import Effect.Console (log)
import Data.Ord (abs)
import Data.List (List(Nil), range, (:), length)
import Data.Traversable (traverse)
muan /
Last active Nov 16, 2019
Details on details cheatsheet.
weihanglo /
Last active Dec 1, 2019
【譯】Rust vs. Go

【譯】Rust vs. Go

本文譯自 Julio MerinoRust vs. Go。Julio Merino 目前是 G 社僱員,在 G 社工作超過 8 年,無論工作內外,都接觸開發不少 Go 語言,並撰寫 [Rust 點評][rust-review]系列文,來聽聽他對 Rust 與 Go 的想法吧。

Thanks Julio Merino for this awesome article!

View FLOLAC18.agda
-- programming
data Nat : Set where
zero : Nat
suc : Nat Nat
_+_ : Nat Nat Nat
zero + n = n
suc m + n = suc (m + n)
gaearon /
Last active Dec 5, 2019
A Gentle Introduction to Prepack, Part 1


When this guide is more complete, the plan is to move it into Prepack documentation.
For now I put it out as a gist to gather initial feedback.

A Gentle Introduction to Prepack (Part 1)

If you're building JavaScript apps, you might already be familiar with some tools that compile JavaScript code to equivalent JavaScript code:

  • Babel lets you use newer JavaScript language features, and outputs equivalent code that targets older JavaScript engines.
You can’t perform that action at this time.