Skip to content

Instantly share code, notes, and snippets.

View liarokapisv's full-sized avatar

Liarokapis Alexandros liarokapisv

View GitHub Profile
data NatE = NZero | NDouble NatG
deriving Show
data NatO = NSucc NatE
deriving Show
type NatG = Either NatE NatO
toInt0 :: NatE -> Int
toInt0 NZero = 0
toInt0 (NDouble n) = 2 * (toInt n)
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE StandaloneDeriving #-}
{-# LANGUAGE UndecidableInstances #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE PatternSynonyms #-}
@liarokapisv
liarokapisv / recursion-schemes-annotation.hs
Created March 11, 2021 21:07
Renaming ast using cata
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE DeriveFoldable #-}
{-# LANGUAGE DeriveTraversable #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE TemplateHaskell #-}
import Data.Functor.Base
import Data.Functor.Foldable
import Data.Functor.Foldable.TH
import Data.Validation
@liarokapisv
liarokapisv / Main.hs
Last active March 13, 2021 18:39
Annotate de bruijn using compdata
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE ViewPatterns #-}
import Data.Comp.Multi.Derive
import Data.Comp.Multi.Algebra
@liarokapisv
liarokapisv / Main.hs
Created March 14, 2021 10:39
Ast Transformation - De bruijn Annotation along with Validation using Data.Comp.Multi
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE ViewPatterns #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE QuantifiedConstraints #-}
@liarokapisv
liarokapisv / conanfile.py
Created January 20, 2023 11:53
gcc-arm-none-eabi recipe
from conan import ConanFile
from conan.tools.layout import basic_layout
from conan.tools.files import copy, get
from conan.errors import ConanInvalidConfiguration
import os
class ArmToolchainConan(ConanFile):
name = "arm-toolchain"
settings = "os", "arch"