Skip to content

Commit 4e3281d

Browse files
authored
Merge pull request #2 from natefaubion/unsafe-fns
Unsafe fns
2 parents 29f6fe4 + d8f3022 commit 4e3281d

File tree

3 files changed

+32
-12
lines changed

3 files changed

+32
-12
lines changed

src/Data/Record.purs

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,11 @@ module Data.Record
66
, delete
77
) where
88

9-
import Data.Function.Uncurried (Fn2, Fn3, runFn2, runFn3)
9+
import Data.Function.Uncurried (runFn2, runFn3)
10+
import Data.Record.Unsafe (unsafeGetFn, unsafeSetFn, unsafeDeleteFn)
1011
import Data.Symbol (class IsSymbol, SProxy, reflectSymbol)
1112
import Type.Row (class RowLacks)
1213

13-
foreign import unsafeGet :: forall r a. Fn2 String (Record r) a
14-
foreign import unsafeSet :: forall r1 r2 a. Fn3 String a (Record r1) (Record r2)
15-
foreign import unsafeDelete :: forall r1 r2. Fn2 String (Record r1) (Record r2)
16-
1714
-- | Get a property for a label which is specified using a value-level proxy for
1815
-- | a type-level string.
1916
-- |
@@ -29,7 +26,7 @@ get
2926
=> SProxy l
3027
-> Record r
3128
-> a
32-
get l r = runFn2 unsafeGet (reflectSymbol l) r
29+
get l r = runFn2 unsafeGetFn (reflectSymbol l) r
3330

3431
-- | Set a property for a label which is specified using a value-level proxy for
3532
-- | a type-level string.
@@ -49,7 +46,7 @@ set
4946
-> b
5047
-> Record r1
5148
-> Record r2
52-
set l b r = runFn3 unsafeSet (reflectSymbol l) b r
49+
set l b r = runFn3 unsafeSetFn (reflectSymbol l) b r
5350

5451
-- | Modify a property for a label which is specified using a value-level proxy for
5552
-- | a type-level string.
@@ -89,7 +86,7 @@ insert
8986
-> a
9087
-> Record r1
9188
-> Record r2
92-
insert l a r = runFn3 unsafeSet (reflectSymbol l) a r
89+
insert l a r = runFn3 unsafeSetFn (reflectSymbol l) a r
9390

9491
-- | Delete a property for a label which is specified using a value-level proxy for
9592
-- | a type-level string.
@@ -111,4 +108,4 @@ delete
111108
=> SProxy l
112109
-> Record r2
113110
-> Record r1
114-
delete l r = runFn2 unsafeDelete (reflectSymbol l) r
111+
delete l r = runFn2 unsafeDeleteFn (reflectSymbol l) r

src/Data/Record.js renamed to src/Data/Record/Unsafe.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
"use strict";
22

3-
exports.unsafeGet = function(label, rec) {
3+
exports.unsafeGetFn = function(label, rec) {
44
return rec[label];
55
};
66

7-
exports.unsafeSet = function(label, value, rec) {
7+
exports.unsafeSetFn = function(label, value, rec) {
88
var copy = {};
99
for (var key in rec) {
1010
if ({}.hasOwnProperty.call(rec, key)) {
@@ -15,7 +15,7 @@ exports.unsafeSet = function(label, value, rec) {
1515
return copy;
1616
};
1717

18-
exports.unsafeDelete = function(label, rec) {
18+
exports.unsafeDeleteFn = function(label, rec) {
1919
var copy = {};
2020
for (var key in rec) {
2121
if (key !== label && {}.hasOwnProperty.call(rec, key)) {

src/Data/Record/Unsafe.purs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
module Data.Record.Unsafe
2+
( unsafeGetFn
3+
, unsafeSetFn
4+
, unsafeDeleteFn
5+
, unsafeGet
6+
, unsafeSet
7+
, unsafeDelete
8+
) where
9+
10+
import Data.Function.Uncurried (Fn2, Fn3, runFn2, runFn3)
11+
12+
foreign import unsafeGetFn :: forall r a. Fn2 String (Record r) a
13+
foreign import unsafeSetFn :: forall r1 r2 a. Fn3 String a (Record r1) (Record r2)
14+
foreign import unsafeDeleteFn :: forall r1 r2. Fn2 String (Record r1) (Record r2)
15+
16+
unsafeGet :: forall r a. String -> Record r -> a
17+
unsafeGet = runFn2 unsafeGetFn
18+
19+
unsafeSet :: forall r1 r2 a. String -> a -> Record r1 -> Record r2
20+
unsafeSet = runFn3 unsafeSetFn
21+
22+
unsafeDelete :: forall r1 r2. String -> Record r1 -> Record r2
23+
unsafeDelete = runFn2 unsafeDeleteFn

0 commit comments

Comments
 (0)