aboutsummaryrefslogtreecommitdiff
path: root/std/magic
diff options
context:
space:
mode:
authorJJ2024-01-02 21:49:25 +0000
committerJJ2024-01-02 21:50:47 +0000
commitfde7a1311543badd1052a757d1e2c68272be1188 (patch)
treeabe438ea65ac8d90a1848593846531b59d0e1ce3 /std/magic
parent4852f1caabcbcd5ad3dd5696bfe4bc428d653f94 (diff)
std: more fleshing out. merge std.magic back into std.prelude.
Diffstat (limited to 'std/magic')
-rw-r--r--std/magic/arrays.pk20
-rw-r--r--std/magic/booleans.pk42
-rw-r--r--std/magic/numbers.pk77
-rw-r--r--std/magic/pointers.pk7
4 files changed, 0 insertions, 146 deletions
diff --git a/std/magic/arrays.pk b/std/magic/arrays.pk
deleted file mode 100644
index a0207c1..0000000
--- a/std/magic/arrays.pk
+++ /dev/null
@@ -1,20 +0,0 @@
-## std.arrays: The array[T, S] primitive and associated functions.
-## A stub module for documentation.
-
-## Primitive fixed-size arrays. Their size is statically known at compile-time.
-pub type array[T, S: static[uint]]
-
-## Array access. Returns None if i is out of range.
-pub func get[T, S: static[uint]](self: array[T, S], i: uint): T?
-## Array mutation.
-# todo: how do we detect range errors?
-pub func set[T, S: static[uint]](self: mut array[T, S], i: uint, val: T): T?
-## A helper function to get the length of an array.
-## Known to the compiler, and computed at compile-time.
-pub func len[T, S: static[uint]](self: array[T, S], i: uint): T?
-
-type ArrayIter[T, S: static[uint]] = struct
- ...
-pub func iter[T, S: static[uint]](self: array[T, S]): ArrayIter[T, S]
-
-# todo: Eq, PartialEq, Ord, PartialOrd
diff --git a/std/magic/booleans.pk b/std/magic/booleans.pk
deleted file mode 100644
index 3c7e28e..0000000
--- a/std/magic/booleans.pk
+++ /dev/null
@@ -1,42 +0,0 @@
-## std.booleans: Booleans and related types. Mostly compiler magic.
-## A stub module for documentation.
-
-pub type unit = union[sole]
-pub type bool = union[false, true]
-
-# note: puck could resolve kleene.false vs bool.false...
-# this is probably not worth it compared to improved type inference
-# pub type Kleene = union[False, Maybe, True]
-
-## Boolean equality
-pub func ==(a: bool, b: bool): bool =
- match a
- of (true, true), (false, false): true
- of (false, true), (true, false): false
-
-pub func !=(a: bool, b: bool): bool =
- not a == b
-
-## Boolean negation
-pub func not(a: bool): bool =
- match a
- of true: false
- of false: true
-
-## Boolean conjunction
-pub func and(a: bool, b: bool): bool =
- match (a, b)
- of (true, true): true
- of _: false
-
-## Boolean disjunction
-pub func or(a: bool, b: bool): bool =
- match (a, b)
- of (false, false): false
- of _: true
-
-## Boolean exclusive disjunction
-pub func xor(a: bool, b: bool): bool =
- match (a, b)
- of (true, true), (false, false): false
- of (true, false), (false, true): true
diff --git a/std/magic/numbers.pk b/std/magic/numbers.pk
deleted file mode 100644
index 007f4b7..0000000
--- a/std/magic/numbers.pk
+++ /dev/null
@@ -1,77 +0,0 @@
-## std.numbers: Operations on numbers and such.
-## A stub module for documentation.
-# reference: https://en.wikipedia.org/wiki/IEEE_754
-
-## The default integer type. Size depends on architecture.
-pub type int
-## A signed 8-bit integer.
-pub type i8
-## A signed 16-bit integer.
-pub type i16
-## A signed 32-bit integer.
-pub type i32
-## A signed 64-bit integer.
-pub type i64
-## A signed 128-bit integer.
-pub type i128
-
-## The default unsigned integer type. Size depends on architecture.
-pub type uint
-## An unsigned 8-bit integer.
-pub type u8
-## An unsigned 16-bit integer.
-pub type u16
-## An unsigned 32-bit integer.
-pub type u32
-## An unsigned 64-bit integer.
-pub type u64
-## An unsigned 128-bit integer.
-pub type u128
-
-## A floating-point type. Takes up 64 bits by default.
-pub type float = f64
-## A 32-bit floating point type. Single precision.
-pub type f32
-## A 64-bit floating point type. Double precision.
-pub type f64
-## A 128-bit floating point type. Quadruple precision.
-pub type f128
-
-## A decimal type, according to IEEE 754. Takes up 64 bits by default.
-pub type decimal = dec64
-## A 64-bit decimal type.
-pub type dec64
-## A 128-bit decimal type.
-pub type dec128
-
-## 8-bit bytes.
-pub type byte = u8
-## 4-byte chars. These represent distinct Unicode characters.
-pub type char = distinct u32
-## An alias to `char`, to match with `str`.
-pub type chr = char
-
-## The IEEE floating point value of *Not a Number*.
-pub const NaN: f64 = 0x7FF7FFFFFFFFFFFF
-## The IEEE floating point value of positive infinity.
-pub const Inf: f64 = 0x7FF0000000000000
-## The IEEE floating point value of negative infinity.
-pub const NegInf: f64 = 0xFFF0000000000000
-
-# todo: type conversions
-
-pub func +[T](a: T, b: T): T
-pub func -[T](a: T, b: T): T
-pub func *[T](a: T, b: T): T
-pub func /[T](a: T, b: T): float
-pub func ^[T](a: T, b: T): T # todo: should be exp?
-
-pub func div[T](a: T, b: T): T
-pub func mod[T](a: T, b: T): T # fixme
-pub func rem[T](a: T, b: T): T
-
-pub func shl[T](a: T): T
-pub func shr[T](a: T): T
-
-pub func abs[T](a: T): T
-pub func neg[T](a: T): bool
diff --git a/std/magic/pointers.pk b/std/magic/pointers.pk
deleted file mode 100644
index e2a95cf..0000000
--- a/std/magic/pointers.pk
+++ /dev/null
@@ -1,7 +0,0 @@
-## std.pointers: Pointer arithmetic. Unsafe.
-
-pub type ptr[T]
-pub type ref[T]
-pub type unique[T]
-
-# idk what goes here