Skip to content

Instantly share code, notes, and snippets.

@paluh
paluh / Main.purs
Created January 12, 2022 18:20
"Variant enum" from "Variant"
module Main where
import Prelude
import Data.Enum (upFrom)
import Data.List (List)
import Data.Map (fromFoldable, lookup) as Map
import Data.Maybe (Maybe)
import Data.Tuple.Nested ((/\))
import Data.Variant (Unvariant(..), Variant, unvariant)
@paluh
paluh / Main.purs
Last active January 12, 2022 17:31
Variant Eunm from ADT
module Main where
import Prelude
import Data.Enum (upFrom)
import Data.Foldable (fold)
import Data.Generic.Rep (Constructor, Sum) as Generic.Rep
import Data.Generic.Rep (class Generic)
import Data.List (List)
import Data.Map (fromFoldable, lookup) as Map
@paluh
paluh / Main.purs
Created December 14, 2021 14:23
Generating lenses from record type
module Main where
import Data.Lens (set, view) as Lens
import Data.Lens.Record (prop)
import Data.Profunctor.Strong (class Strong)
import Heterogeneous.Folding (class FoldingWithIndex, class HFoldlWithIndex, hfoldlWithIndex)
import Prim.Row (class Cons, class Lacks) as Row
import Prim.RowList (class RowToList) as RL
import Record (insert) as Record
import Type.Prelude (class IsSymbol)
@paluh
paluh / Main.purs
Last active December 9, 2021 19:50 — forked from anonymous/Main.purs
Published with try.purescript.org
module Main where
import TryPureScript (p, text, render)
import Prelude
import Data.Generic.Rep (class Generic)
import Data.Show.Generic (genericShow)
data Route = Home | Users String | User Int | NotFound String
@paluh
paluh / Main.purs
Created June 1, 2021 13:28
Parse to `Variant`
module Main where
import Prelude
import Data.Foldable (fold)
import Effect (Effect)
import TryPureScript (h1, h2, p, text, list, indent, link, render, code)
import Record (merge) as Record
import Data.Variant (inj, match, Variant)
import Data.Maybe (fromMaybe, Maybe(..))
@paluh
paluh / purty.nix
Last active May 24, 2021 13:33
purty.nix
{ pkgs ? import <nixpkgs> {} }:
pkgs.stdenv.mkDerivation rec {
pname = "purty";
version = "7.0.0";
src = pkgs.fetchurl {
url = "https://registry.npmjs.org/purty/-/purty-${version}.tgz";
sha256 = "1h9z43aj1gflysy0379j7cpdvszjlk9lvg861hgk7dmqq59qzd4y";
};
@paluh
paluh / Main.purs
Last active May 5, 2021 17:00
An example which shows how to use `Type.Row.+`
module Main where
import Type.Row (type (+))
type Row_ab r = ( a :: String, b :: Int | r)
type Row_c r = (c :: Boolean | r)
type Row_d r = (d :: Number | r)
@paluh
paluh / Main.purs
Last active November 11, 2020 22:12
Variant expand
module Main where
import Data.Functor (map)
import Data.Monoid ((<>))
import Data.Variant (expand, Variant)
import Prim.Row (class Union)
combine :: forall v v_ w w_ u. Union w w_ u => Union v v_ u =>
Array (Variant v)
-> Array (Variant w)
@paluh
paluh / Main.purs
Created September 30, 2020 18:59
Nested map and apply
module Main where
import Prelude
import Effect (Effect)
import Data.Foldable (fold)
import Data.Identity (Identity(..))
import Data.Maybe (Maybe(..))
import TryPureScript (h1, h2, p, text, list, indent, link, render, code)
import Type.Equality (class TypeEquals, from, to)
@paluh
paluh / StarValidator.purs
Created September 4, 2020 14:48
Basic validation type with semigroupoid based on Star
module Main where
import Prelude
import Data.Either (Either(..))
import Data.Map (Map)
import Data.Map (lookup) as Map
import Data.Maybe (Maybe(..))
import Data.Profunctor.Star (Star(..))
import Data.Validation.Semigroup (V(..), invalid)