版博士V2.0程序
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

74 строки
1.7 KiB

  1. import * as _ from './internal';
  2. // -------------------------------------------------------------------------------------
  3. // constructors
  4. // -------------------------------------------------------------------------------------
  5. /**
  6. * Returns a `Refinement` from a `Option` returning function.
  7. * This function ensures that a `Refinement` definition is type-safe.
  8. *
  9. * @category lifting
  10. * @since 2.11.0
  11. */
  12. export var fromOptionK = function (getOption) {
  13. return function (a) { return _.isSome(getOption(a)); };
  14. };
  15. /**
  16. * @category lifting
  17. * @since 2.11.0
  18. */
  19. export var fromEitherK = function (getEither) {
  20. return function (a) { return _.isRight(getEither(a)); };
  21. };
  22. /**
  23. * @category constructors
  24. * @since 2.11.0
  25. */
  26. export var id = function () {
  27. return function (_) { return true; };
  28. };
  29. // -------------------------------------------------------------------------------------
  30. // combinators
  31. // -------------------------------------------------------------------------------------
  32. /**
  33. * @since 2.11.0
  34. */
  35. export var not = function (refinement) {
  36. return function (a) {
  37. return !refinement(a);
  38. };
  39. };
  40. /**
  41. * @since 2.11.0
  42. */
  43. export var or = function (second) {
  44. return function (first) {
  45. return function (a) {
  46. return first(a) || second(a);
  47. };
  48. };
  49. };
  50. /**
  51. * @since 2.11.0
  52. */
  53. export var and = function (second) {
  54. return function (first) {
  55. return function (a) {
  56. return first(a) && second(a);
  57. };
  58. };
  59. };
  60. /**
  61. * @since 2.11.0
  62. */
  63. export var zero = function () {
  64. return function (_) { return false; };
  65. };
  66. /**
  67. * @since 2.11.0
  68. */
  69. export var compose = function (bc) {
  70. return function (ab) {
  71. return function (i) { return ab(i) && bc(i); };
  72. };
  73. };