How to use the sanctuary-def.String function in sanctuary-def

To help you get started, we’ve selected a few sanctuary-def examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github xodio / hm-def / test / signature.spec.js View on Github external
it ('should resolve built-in types', () => {
    const {types} = resolve ($) ([]) ($.env) ('foo :: Number -> String');
    assert.deepEqual (types, [$.Number, $.String]);
  });
github sanctuary-js / sanctuary / test / PairType.js View on Github external
test ('PairType', () => {

  eq (typeof S.PairType) ('function');
  eq (S.PairType.length) (1);
  eq (S.show (S.PairType)) ('Pair :: Type -> Type -> Type');

  eq (S.is (S.PairType ($.String) ($.Number)) (S.Pair ('hi') (0.25))) (true);
  eq (S.is (S.PairType ($.String) ($.Number)) (S.Pair ('hi') ('hi'))) (false);
  eq (S.is (S.PairType ($.String) ($.Number)) (S.Pair (0.25) (0.25))) (false);
  eq (S.is (S.PairType ($.String) ($.Number)) (S.Pair (null) (null))) (false);
  eq (S.is (S.PairType ($.String) ($.Number)) (null)) (false);

});
github sanctuary-js / sanctuary / test / PairType.js View on Github external
test ('PairType', () => {

  eq (typeof S.PairType) ('function');
  eq (S.PairType.length) (1);
  eq (S.show (S.PairType)) ('Pair :: Type -> Type -> Type');

  eq (S.is (S.PairType ($.String) ($.Number)) (S.Pair ('hi') (0.25))) (true);
  eq (S.is (S.PairType ($.String) ($.Number)) (S.Pair ('hi') ('hi'))) (false);
  eq (S.is (S.PairType ($.String) ($.Number)) (S.Pair (0.25) (0.25))) (false);
  eq (S.is (S.PairType ($.String) ($.Number)) (S.Pair (null) (null))) (false);
  eq (S.is (S.PairType ($.String) ($.Number)) (null)) (false);

});
github sanctuary-js / sanctuary / test / EitherType.js View on Github external
test ('EitherType', () => {

  eq (typeof S.EitherType) ('function');
  eq (S.EitherType.length) (1);
  eq (S.show (S.EitherType)) ('Either :: Type -> Type -> Type');

  eq (S.is (S.EitherType ($.String) ($.Number)) (S.Left ('Error'))) (true);
  eq (S.is (S.EitherType ($.String) ($.Number)) (S.Right (42))) (true);
  eq (S.is (S.EitherType ($.String) ($.Number)) (S.Right ('42'))) (false);
  eq (S.is (S.EitherType ($.String) ($.Number)) (S.Just (42))) (false);
  eq (S.is (S.EitherType ($.String) ($.Number)) (null)) (false);

});
github sanctuary-js / sanctuary / test / get.js View on Github external
test ('get', () => {

  eq (S.show (S.get)) ('get :: (Any -> Boolean) -> String -> a -> Maybe b');

  eq (S.get (S.is ($.Number)) ('x') ({x: 0, y: 42})) (S.Just (0));
  eq (S.get (S.is ($.Number)) ('y') ({x: 0, y: 42})) (S.Just (42));
  eq (S.get (S.is ($.Number)) ('z') ({x: 0, y: 42})) (S.Nothing);
  eq (S.get (S.is ($.String)) ('z') ({x: 0, y: 42})) (S.Nothing);
  eq (S.get (S.is ($.String)) ('x') ({x: 0, y: 42})) (S.Nothing);
  eq (S.get (S.is ($.RegExp)) ('x') ({x: vm.runInNewContext ('/.*/')})) (S.Just (/.*/));

  eq (S.get (S.K (true)) ('valueOf') (null)) (S.Nothing);
  eq (S.get (S.K (true)) ('valueOf') (undefined)) (S.Nothing);

  eq (S.get (S.is ($.Array ($.Number))) ('x') ({x: [1, 2]})) (S.Just ([1, 2]));
  eq (S.get (S.is ($.Array ($.Number))) ('x') ({x: [1, 2, null]})) (S.Nothing);

});
github sanctuary-js / sanctuary / test / EitherType.js View on Github external
test ('EitherType', () => {

  eq (typeof S.EitherType) ('function');
  eq (S.EitherType.length) (1);
  eq (S.show (S.EitherType)) ('Either :: Type -> Type -> Type');

  eq (S.is (S.EitherType ($.String) ($.Number)) (S.Left ('Error'))) (true);
  eq (S.is (S.EitherType ($.String) ($.Number)) (S.Right (42))) (true);
  eq (S.is (S.EitherType ($.String) ($.Number)) (S.Right ('42'))) (false);
  eq (S.is (S.EitherType ($.String) ($.Number)) (S.Just (42))) (false);
  eq (S.is (S.EitherType ($.String) ($.Number)) (null)) (false);

});
github sanctuary-js / sanctuary / test / is.js View on Github external
eq (S.is ($.Boolean) (new Boolean (true))) (false);
  eq (S.is ($.Boolean) (new Boolean (false))) (false);

  eq (S.is ($.Array ($.Integer)) (null)) (false);
  eq (S.is ($.Array ($.Integer)) (undefined)) (false);
  eq (S.is ($.Array ($.Integer)) (['1', '2', '3'])) (false);
  eq (S.is ($.Array ($.Integer)) ([1, 2, 3.14])) (false);
  eq (S.is ($.Array ($.Integer)) ([1, 2, 3])) (true);
  eq (S.is ($.Array ($.Integer)) ([])) (true);

  eq (S.is ($.Maybe ($.Integer)) (S.Nothing)) (true);
  eq (S.is ($.Maybe ($.Integer)) (S.Just (0))) (true);
  eq (S.is ($.Maybe ($.Integer)) (S.Left (0))) (false);
  eq (S.is ($.Maybe ($.Integer)) (S.Right (0))) (false);

  eq (S.is ($.Either ($.String) ($.Integer)) (S.Nothing)) (false);
  eq (S.is ($.Either ($.String) ($.Integer)) (S.Just (0))) (false);
  eq (S.is ($.Either ($.String) ($.Integer)) (S.Left (0))) (false);
  eq (S.is ($.Either ($.String) ($.Integer)) (S.Right (''))) (false);
  eq (S.is ($.Either ($.String) ($.Integer)) (S.Left (''))) (true);
  eq (S.is ($.Either ($.String) ($.Integer)) (S.Right (0))) (true);

  const a = $.TypeVariable ('a');

  eq (S.is ($.Array (a)) ([])) (true);
  eq (S.is ($.Array (a)) ([1, 2, 3])) (true);
  eq (S.is ($.Array (a)) (['foo', 'bar', 'baz'])) (true);
  eq (S.is ($.Array (a)) (['foo', true, 42])) (false);
  eq (S.is ($.Array (a)) ([Sum (1), Sum (2), Sum (3)])) (false);

  eq ((S.create ({checkTypes: true, env: []})).is ($.Array (a)) ([])) (false);
  eq ((S.create ({checkTypes: true, env: [$.String]})).is ($.Array (a)) ([])) (true);
github sanctuary-js / sanctuary / test / get.js View on Github external
test ('get', () => {

  eq (S.show (S.get)) ('get :: (Any -> Boolean) -> String -> a -> Maybe b');

  eq (S.get (S.is ($.Number)) ('x') ({x: 0, y: 42})) (S.Just (0));
  eq (S.get (S.is ($.Number)) ('y') ({x: 0, y: 42})) (S.Just (42));
  eq (S.get (S.is ($.Number)) ('z') ({x: 0, y: 42})) (S.Nothing);
  eq (S.get (S.is ($.String)) ('z') ({x: 0, y: 42})) (S.Nothing);
  eq (S.get (S.is ($.String)) ('x') ({x: 0, y: 42})) (S.Nothing);
  eq (S.get (S.is ($.RegExp)) ('x') ({x: vm.runInNewContext ('/.*/')})) (S.Just (/.*/));

  eq (S.get (S.K (true)) ('valueOf') (null)) (S.Nothing);
  eq (S.get (S.K (true)) ('valueOf') (undefined)) (S.Nothing);

  eq (S.get (S.is ($.Array ($.Number))) ('x') ({x: [1, 2]})) (S.Just ([1, 2]));
  eq (S.get (S.is ($.Array ($.Number))) ('x') ({x: [1, 2, null]})) (S.Nothing);

});
github sanctuary-js / sanctuary / test / is.js View on Github external
eq (S.is ($.Boolean) (new Boolean (false))) (false);

  eq (S.is ($.Array ($.Integer)) (null)) (false);
  eq (S.is ($.Array ($.Integer)) (undefined)) (false);
  eq (S.is ($.Array ($.Integer)) (['1', '2', '3'])) (false);
  eq (S.is ($.Array ($.Integer)) ([1, 2, 3.14])) (false);
  eq (S.is ($.Array ($.Integer)) ([1, 2, 3])) (true);
  eq (S.is ($.Array ($.Integer)) ([])) (true);

  eq (S.is ($.Maybe ($.Integer)) (S.Nothing)) (true);
  eq (S.is ($.Maybe ($.Integer)) (S.Just (0))) (true);
  eq (S.is ($.Maybe ($.Integer)) (S.Left (0))) (false);
  eq (S.is ($.Maybe ($.Integer)) (S.Right (0))) (false);

  eq (S.is ($.Either ($.String) ($.Integer)) (S.Nothing)) (false);
  eq (S.is ($.Either ($.String) ($.Integer)) (S.Just (0))) (false);
  eq (S.is ($.Either ($.String) ($.Integer)) (S.Left (0))) (false);
  eq (S.is ($.Either ($.String) ($.Integer)) (S.Right (''))) (false);
  eq (S.is ($.Either ($.String) ($.Integer)) (S.Left (''))) (true);
  eq (S.is ($.Either ($.String) ($.Integer)) (S.Right (0))) (true);

  const a = $.TypeVariable ('a');

  eq (S.is ($.Array (a)) ([])) (true);
  eq (S.is ($.Array (a)) ([1, 2, 3])) (true);
  eq (S.is ($.Array (a)) (['foo', 'bar', 'baz'])) (true);
  eq (S.is ($.Array (a)) (['foo', true, 42])) (false);
  eq (S.is ($.Array (a)) ([Sum (1), Sum (2), Sum (3)])) (false);

  eq ((S.create ({checkTypes: true, env: []})).is ($.Array (a)) ([])) (false);
  eq ((S.create ({checkTypes: true, env: [$.String]})).is ($.Array (a)) ([])) (true);
  eq ((S.create ({checkTypes: true, env: [$.String]})).is ($.Array (a)) ([1, 2, 3])) (false);
github xodio / hm-def / src / index.js View on Github external
const def = $priv.create ({checkTypes: true, env: $priv.env});

const Parameters = $priv.RecordType ({
  $: $priv.Object,
  checkTypes: $priv.Boolean,
  env: $priv.Array ($priv.Type),
  typeClasses: $priv.Array ($priv.TypeClass),
});

export const create = def
  ('create')
  ({})
  ([
    Parameters,
    $priv.String,
    $priv.AnyFunction,
    $priv.AnyFunction,
  ])
  (({$, checkTypes, env, typeClasses}) => {
    const $def = $.create ({checkTypes, env});
    const resovleSig = Sig.resolve ($) (typeClasses) (env);

    return $def
      ('def')
      ({})
      ([$.String, $.AnyFunction])
      (signature => func => {
        const params = resovleSig (signature);
        return $def
          (params.name)
          (params.constraints)