From 850219cdec2b4e4db670ca5597d967b524daef3f Mon Sep 17 00:00:00 2001 From: Dustin Swan Date: Fri, 27 Mar 2026 19:57:43 -0600 Subject: [PATCH] filling in the typeclasses! fun! --- src/cg/01-stdlib.cg | 45 +++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 43 insertions(+), 2 deletions(-) diff --git a/src/cg/01-stdlib.cg b/src/cg/01-stdlib.cg index fe56709..b26e00f 100644 --- a/src/cg/01-stdlib.cg +++ b/src/cg/01-stdlib.cg @@ -3,15 +3,40 @@ Num a { sub : a \ a \ a; mul : a \ a \ a; div : a \ a \ a; + mod : a \ a \ a; + pow : a \ a \ a; }; Int : Num; Float : Num; -Eq a { eq : a \ a \ Bool } +Eq a { + eq : a \ a \ Bool; + neq : a \ a \ Bool; +}; + Int : Eq; String : Eq; +Ord a { + gt : a \ a \ Bool; + lt : a \ a \ Bool; + gte : a \ a \ Bool; + lte : a \ a \ Bool; + max : a \ a \ a; + min : a \ a \ a; +}; + +Int : Ord; +Float : Ord; +String : Ord; + +Show a { show : a \ String }; +Int : Show; +Float : Show; +String : Show; +Bool : Show; + Semigroup a { cat : a \ a \ a }; String : Semigroup; List : Semigroup; @@ -19,7 +44,23 @@ List : Semigroup; Maybe a = None | Some a; Bool = True | False; -# myTest = cat 3 4; +# builtins +floor : Float \ Int; +ceiling : Float \ Int; +int : a \ Int; +len : a \ Int; +chars : String \ List String; +isWordChar : String \ Bool; +split : String \ String \ List String; +slice : a \ Int \ Int \ a; +fuzzyMatch : String \ String \ Bool; +hasField : String \ a \ Bool; +isFunction : a \ Bool; +entries : a \ List { key : String, value : b }; +keys : a \ List String; +nth : Int \ a \ Maybe a; + +# myTest = gt 3 "hi"; # myTest2 = cat [3, 4] [4, 5]; # myTest3 = debug! "myTest2" myTest2;