Skip to content

Instantly share code, notes, and snippets.

View byte-sourcerer's full-sized avatar

cjw byte-sourcerer

View GitHub Profile
@byte-sourcerer
byte-sourcerer / main.ts
Created March 16, 2022 04:11
language server extension typescript template.ts
let langserver: ExampleLanguageServer | null = null;
export const activate = function() {
langserver = new ExampleLanguageServer();
}
export const deactivate = function() {
if (langserver) {
langserver.stop();
langserver = null;
{-# LANGUAGE GADTs #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE MultiParamTypeClasses #-}
module Main where
class Monad m => Handler (g :: * -> *) (m :: * -> *) where
handle :: g a -> (a -> m b) -> m b
data Freer :: (* -> *) -> * -> * where
@byte-sourcerer
byte-sourcerer / permission.rs
Last active March 12, 2023 13:40
Permission Pattern for Rust
/// ref: [zhihu](https://zhuanlan.zhihu.com/p/378252833)
use crate::foo::{IncreaseOnly, new_increase_only};
fn main() {
let mut x1 = new_increase_only!(0);
let mut x2 = new_increase_only!(2);
let y = 1;
// only can be used in `x1`
let le = x1.check_less_or_equal(y).unwrap();
@byte-sourcerer
byte-sourcerer / Main.java
Created September 27, 2023 10:59
Java Jackson Polymorphic Deserialization
package org.example;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.Builder;
import lombok.SneakyThrows;
import lombok.Value;