Skip to content

Instantly share code, notes, and snippets.

View WorldSEnder's full-sized avatar

WorldSEnder

  • Worldwide
View GitHub Profile
@WorldSEnder
WorldSEnder / higher-kinded.ts
Last active January 9, 2023 21:37
Higher kinded types in typescript
// The two main components are the interfaces
// Generic<T, Context> and GenericArg<"identifier">
// Generic basically structurally replaces types in T that are GenericArg<S>
// for some `S extends keyof Context` with `Context[S]`
// See the test cases for specific uses.
// ====== TESTING
// Pass through for trivial types
type Test00 = Generic<number>;
use gloo_events::EventListener;
use wasm_bindgen::{JsCast, UnwrapThrowExt};
use yew::events::{Event, KeyboardEvent};
use yew::html::IntoPropValue;
use yew::prelude::*;
use yew::virtual_dom::VNode;
#[derive(Copy, Clone, Debug, PartialEq)]
pub enum TooltipPosition {
Top,
@WorldSEnder
WorldSEnder / main.rs
Created April 11, 2022 11:42
Function component Yew counter example
use gloo_console as console;
use js_sys::Date;
use std::rc::Rc;
use yew::{function_component, html, use_reducer, Callback, Html, Reducible};
// Define the possible actions which can be sent to the counter
pub enum Action {
Increment,
Decrement,
}
@WorldSEnder
WorldSEnder / lib.rs
Last active December 20, 2021 15:51
Generator components
#![feature(generators, generator_trait, never_type, type_alias_impl_trait)]
use yew::html::AnyScope;
use pin_cell::PinMut;
use pin_cell::PinCell;
use std::rc::Rc;
use std::pin::Pin;
use yew::Html;
use yew::Component;
use yew::ComponentLink;
@WorldSEnder
WorldSEnder / PKGBUILD
Last active August 16, 2020 15:18
Idris 2 improved PKGBUILD for archunix
pkgname=idris2
pkgver=0.2.1
pkgrel=1
pkgdesc="Funtional Programming Lanugage with Dependent Types"
url="https://www.idris-lang.org/"
license=('custom')
arch=('x86_64')
depends=('chez-scheme')
makedepends=('git')
source=("https://www.idris-lang.org/idris2-src/idris2-$pkgver.tgz")
{-# LANGUAGE FlexibleContexts, FlexibleInstances, FunctionalDependencies, PolyKinds, UndecidableSuperClasses #-}
{-# LANGUAGE Rank2Types, TypeApplications, QuantifiedConstraints #-}
module TaggingDefs
( Tagged(..)
, Untag
, Retag
, untag
, untag'
, retag
, retag'
@WorldSEnder
WorldSEnder / logic.agda
Last active April 26, 2020 15:57
Syntax experiment for propositional reasoning in cubical agda
{-# OPTIONS --cubical #-}
{-
This module shows a few syntactical additions, that, like Setoid reasoning in the standard library,
are supposed to make logical reasoning more readable. One of the goals is to avoid having to write
`PropositionalTruncation.rec squash` everywhere when "unpacking" a truncated datatype.
`obtain n ∶ A by prf - cont` does just that. It takes a "proof" producing a truncated ∥ A ∥ and
makes an untruncated A available in the context of cont. There is a special version for mere existance
of an element with a certain property making the property available as a "tactic":
{-# OPTIONS --cubical #-}
module UniverseSIP where
open import Cubical.Data.Prod
open import Cubical.Data.Sigma
open import Cubical.Data.Unit
open import Cubical.Core.Glue
@WorldSEnder
WorldSEnder / braunTree.agda
Last active January 31, 2020 10:08
Linear time? conversion of braun trees to lists
module braunTree where
open import Data.Nat renaming (_⊔_ to _⊔ℕ_)
open import Data.Empty
open import Data.List
open import Level
open import Function
data Tree {a} (A : Set a) : Set a where
@WorldSEnder
WorldSEnder / ModularAutomata.agda
Last active June 19, 2019 21:17
Simulation modular automata
{-# OPTIONS --cubical #-}
module modularAutomata where
open import Data.Maybe
open import Cubical.Data.Prod
open import Cubical.Foundations.Everything
-- first, setup a type of infinite (coinductive) lists, we will need it later for simulation
record νList (A : Set) : Set where