Skip to content

Commit

Permalink
Merge pull request purescript#2 from anttih/semiring-and-records
Browse files Browse the repository at this point in the history
  • Loading branch information
f-f authored Sep 17, 2023
2 parents 63ff5a2 + 9f6bf76 commit b250d70
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 11 deletions.
11 changes: 6 additions & 5 deletions src/Data/Semiring.ss
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,27 @@
intMul
numAdd
numMul)
(import (only (rnrs base) define lambda error))
(import (only (rnrs base) define lambda)
(chezscheme))

(define intAdd
(lambda (x)
(lambda (y)
(error #f "Data.Semiring:intAdd not implemented."))))
(fx+ x y))))

(define intMul
(lambda (x)
(lambda (y)
(error #f "Data.Semiring:intMul not implemented."))))
(fx* x y))))

(define numAdd
(lambda (n1)
(lambda (n2)
(error #f "Data.Semiring:numAdd not implemented."))))
(fl+ n1 n2))))

(define numMul
(lambda (n1)
(lambda (n2)
(error #f "Data.Semiring:numMul not implemented."))))
(fl* n1 n2))))

)
19 changes: 13 additions & 6 deletions src/Record/Unsafe.ss
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,33 @@
unsafeGet
unsafeSet
unsafeDelete)
(import (only (rnrs base) define lambda error))
(import (only (rnrs base) define lambda let)
(prefix (purs runtime lib) rt:)
(prefix (purs runtime srfi :125) srfi:125:))

(define unsafeHas
(lambda (label)
(lambda (rec)
(error #f "Record.Unsafe:unsafeHas not implemented."))))
(srfi:125:hash-table-contains? rec label))))

(define unsafeGet
(lambda (label)
(lambda (rec)
(error #f "Record.Unsafe:unsafeGet not implemented."))))
(rt:object-ref rec label))))

(define unsafeSet
(lambda (label)
(lambda (rec)
(error #f "Record.Unsafe:unsafeSet not implemented."))))
(lambda (value)
(lambda (rec)
(let ([rec-copy (rt:object-copy rec)])
(rt:object-set! rec-copy label value)
rec-copy)))))

(define unsafeDelete
(lambda (label)
(lambda (rec)
(error #f "Record.Unsafe:unsafeDelete not implemented."))))
(let ([rec-copy (rt:object-copy rec)])
(srfi:125:hash-table-delete! rec-copy label)
rec-copy))))

)

0 comments on commit b250d70

Please sign in to comment.