INIT
This commit is contained in:
commit
08c9f02f31
7 changed files with 1064 additions and 0 deletions
12
.gitignore
vendored
Normal file
12
.gitignore
vendored
Normal file
|
@ -0,0 +1,12 @@
|
|||
attic/
|
||||
bower_components/
|
||||
node_modules/
|
||||
.pulp-cache/
|
||||
output/
|
||||
output-es/
|
||||
generated-docs/
|
||||
.psc-package/
|
||||
.psc*
|
||||
.purs*
|
||||
.psa*
|
||||
.spago
|
2
README.md
Normal file
2
README.md
Normal file
|
@ -0,0 +1,2 @@
|
|||
Some Singletons for PureScript
|
||||
|
919
spago.lock
Normal file
919
spago.lock
Normal file
|
@ -0,0 +1,919 @@
|
|||
{
|
||||
"workspace": {
|
||||
"packages": {
|
||||
"singletons": {
|
||||
"path": "./",
|
||||
"core": {
|
||||
"dependencies": [
|
||||
"arrays",
|
||||
"console",
|
||||
"effect",
|
||||
"exists",
|
||||
"leibniz",
|
||||
"maybe",
|
||||
"prelude",
|
||||
"typelevel-prelude"
|
||||
],
|
||||
"build_plan": [
|
||||
"arrays",
|
||||
"bifunctors",
|
||||
"console",
|
||||
"const",
|
||||
"contravariant",
|
||||
"control",
|
||||
"distributive",
|
||||
"effect",
|
||||
"either",
|
||||
"exists",
|
||||
"foldable-traversable",
|
||||
"functions",
|
||||
"functors",
|
||||
"identity",
|
||||
"invariant",
|
||||
"leibniz",
|
||||
"maybe",
|
||||
"newtype",
|
||||
"nonempty",
|
||||
"orders",
|
||||
"partial",
|
||||
"prelude",
|
||||
"profunctor",
|
||||
"refs",
|
||||
"safe-coerce",
|
||||
"st",
|
||||
"tailrec",
|
||||
"tuples",
|
||||
"type-equality",
|
||||
"typelevel-prelude",
|
||||
"unfoldable",
|
||||
"unsafe-coerce"
|
||||
]
|
||||
},
|
||||
"test": {
|
||||
"dependencies": [],
|
||||
"build_plan": []
|
||||
}
|
||||
}
|
||||
},
|
||||
"package_set": {
|
||||
"address": {
|
||||
"registry": "60.6.0"
|
||||
},
|
||||
"compiler": ">=0.15.15 <0.16.0",
|
||||
"content": {
|
||||
"abc-parser": "2.0.1",
|
||||
"ace": "9.1.0",
|
||||
"address-rfc2821": "0.1.1",
|
||||
"aff": "8.0.0",
|
||||
"aff-bus": "6.0.0",
|
||||
"aff-coroutines": "9.0.0",
|
||||
"aff-promise": "4.0.0",
|
||||
"aff-retry": "2.0.0",
|
||||
"affjax": "13.0.0",
|
||||
"affjax-node": "1.0.0",
|
||||
"affjax-web": "1.0.0",
|
||||
"ansi": "7.0.0",
|
||||
"apexcharts": "0.5.0",
|
||||
"applicative-phases": "1.0.0",
|
||||
"argonaut": "9.0.0",
|
||||
"argonaut-aeson-generic": "0.4.1",
|
||||
"argonaut-codecs": "9.1.0",
|
||||
"argonaut-core": "7.0.0",
|
||||
"argonaut-generic": "8.0.0",
|
||||
"argonaut-traversals": "10.0.0",
|
||||
"argparse-basic": "2.0.0",
|
||||
"array-builder": "0.1.2",
|
||||
"array-search": "0.6.0",
|
||||
"arraybuffer": "13.2.0",
|
||||
"arraybuffer-builder": "3.1.0",
|
||||
"arraybuffer-types": "3.0.2",
|
||||
"arrays": "7.3.0",
|
||||
"arrays-extra": "0.6.1",
|
||||
"arrays-zipper": "2.0.1",
|
||||
"ask": "1.0.0",
|
||||
"assert": "6.0.0",
|
||||
"assert-multiple": "0.4.0",
|
||||
"avar": "5.0.0",
|
||||
"b64": "0.0.8",
|
||||
"barbies": "1.0.1",
|
||||
"barlow-lens": "0.9.0",
|
||||
"bifunctors": "6.0.0",
|
||||
"bigints": "7.0.1",
|
||||
"bolson": "0.3.9",
|
||||
"bookhound": "0.1.7",
|
||||
"bower-json": "3.0.0",
|
||||
"call-by-name": "4.0.1",
|
||||
"canvas": "6.0.0",
|
||||
"canvas-action": "9.0.0",
|
||||
"cartesian": "1.0.6",
|
||||
"catenable-lists": "7.0.0",
|
||||
"cbor-stream": "1.3.0",
|
||||
"chameleon": "1.0.0",
|
||||
"chameleon-halogen": "1.0.3",
|
||||
"chameleon-react-basic": "1.1.0",
|
||||
"chameleon-styled": "2.5.0",
|
||||
"chameleon-transformers": "1.0.0",
|
||||
"channel": "1.0.0",
|
||||
"checked-exceptions": "3.1.1",
|
||||
"choku": "1.0.1",
|
||||
"classless": "0.1.1",
|
||||
"classless-arbitrary": "0.1.1",
|
||||
"classless-decode-json": "0.1.1",
|
||||
"classless-encode-json": "0.1.3",
|
||||
"classnames": "2.0.0",
|
||||
"codec": "6.1.0",
|
||||
"codec-argonaut": "10.0.0",
|
||||
"codec-json": "2.0.0",
|
||||
"colors": "7.0.1",
|
||||
"concur-core": "0.5.0",
|
||||
"concur-react": "0.5.0",
|
||||
"concurrent-queues": "3.0.0",
|
||||
"console": "6.1.0",
|
||||
"const": "6.0.0",
|
||||
"contravariant": "6.0.0",
|
||||
"control": "6.0.0",
|
||||
"convertable-options": "1.0.0",
|
||||
"coroutines": "7.0.0",
|
||||
"css": "6.0.0",
|
||||
"css-frameworks": "1.0.1",
|
||||
"csv-stream": "2.3.0",
|
||||
"data-mvc": "0.0.2",
|
||||
"datetime": "6.1.0",
|
||||
"datetime-parsing": "0.2.0",
|
||||
"debounce": "0.1.0",
|
||||
"debug": "6.0.2",
|
||||
"decimals": "7.1.0",
|
||||
"default-values": "1.0.1",
|
||||
"deku": "0.9.23",
|
||||
"deno": "0.0.5",
|
||||
"dissect": "1.0.0",
|
||||
"distributive": "6.0.0",
|
||||
"dom-filereader": "7.0.0",
|
||||
"dom-indexed": "12.0.0",
|
||||
"dom-simple": "0.4.0",
|
||||
"dotenv": "4.0.3",
|
||||
"droplet": "0.6.0",
|
||||
"dts": "1.0.0",
|
||||
"dual-numbers": "1.0.3",
|
||||
"dynamic-buffer": "3.0.1",
|
||||
"echarts-simple": "0.0.1",
|
||||
"effect": "4.0.0",
|
||||
"either": "6.1.0",
|
||||
"elmish": "0.13.0",
|
||||
"elmish-enzyme": "0.1.1",
|
||||
"elmish-hooks": "0.10.3",
|
||||
"elmish-html": "0.9.0",
|
||||
"elmish-testing-library": "0.3.2",
|
||||
"email-validate": "7.0.0",
|
||||
"encoding": "0.0.9",
|
||||
"enums": "6.0.1",
|
||||
"env-names": "0.4.0",
|
||||
"error": "2.0.0",
|
||||
"eta-conversion": "0.3.2",
|
||||
"exceptions": "6.1.0",
|
||||
"exists": "6.0.0",
|
||||
"exitcodes": "4.0.0",
|
||||
"expect-inferred": "3.0.0",
|
||||
"ezfetch": "1.0.0",
|
||||
"fahrtwind": "2.0.0",
|
||||
"fallback": "0.1.0",
|
||||
"fast-vect": "1.2.0",
|
||||
"fetch": "4.1.0",
|
||||
"fetch-argonaut": "1.0.1",
|
||||
"fetch-core": "5.1.0",
|
||||
"fetch-yoga-json": "1.1.0",
|
||||
"ffi-simple": "0.5.1",
|
||||
"fft-js": "0.1.0",
|
||||
"filterable": "5.0.0",
|
||||
"fix-functor": "0.1.0",
|
||||
"fixed-points": "7.0.0",
|
||||
"fixed-precision": "5.0.0",
|
||||
"flame": "1.3.0",
|
||||
"float32": "2.0.0",
|
||||
"fmt": "0.2.1",
|
||||
"foldable-traversable": "6.0.0",
|
||||
"foldable-traversable-extra": "0.0.6",
|
||||
"foreign": "7.0.0",
|
||||
"foreign-object": "4.1.0",
|
||||
"foreign-readwrite": "3.4.0",
|
||||
"forgetmenot": "0.1.0",
|
||||
"fork": "6.0.0",
|
||||
"form-urlencoded": "7.0.0",
|
||||
"formatters": "7.0.0",
|
||||
"framer-motion": "1.0.1",
|
||||
"free": "7.1.0",
|
||||
"freeap": "7.0.0",
|
||||
"freer-free": "0.0.1",
|
||||
"freet": "7.0.0",
|
||||
"functions": "6.0.0",
|
||||
"functor1": "3.0.0",
|
||||
"functors": "5.0.0",
|
||||
"fuzzy": "0.4.0",
|
||||
"gen": "4.0.0",
|
||||
"generate-values": "1.0.1",
|
||||
"generic-router": "0.0.1",
|
||||
"geojson": "0.0.5",
|
||||
"geometria": "2.2.0",
|
||||
"gojs": "0.1.1",
|
||||
"grain": "3.0.0",
|
||||
"grain-router": "3.0.0",
|
||||
"grain-virtualized": "3.0.0",
|
||||
"graphs": "8.1.0",
|
||||
"group": "4.1.1",
|
||||
"halogen": "7.0.0",
|
||||
"halogen-bootstrap5": "5.3.2",
|
||||
"halogen-canvas": "1.0.0",
|
||||
"halogen-css": "10.0.0",
|
||||
"halogen-echarts-simple": "0.0.4",
|
||||
"halogen-formless": "4.0.3",
|
||||
"halogen-helix": "1.0.1",
|
||||
"halogen-hooks": "0.6.3",
|
||||
"halogen-hooks-extra": "0.9.0",
|
||||
"halogen-infinite-scroll": "1.1.0",
|
||||
"halogen-store": "0.5.4",
|
||||
"halogen-storybook": "2.0.0",
|
||||
"halogen-subscriptions": "2.0.0",
|
||||
"halogen-svg-elems": "8.0.0",
|
||||
"halogen-typewriter": "1.0.4",
|
||||
"halogen-vdom": "8.0.0",
|
||||
"halogen-vdom-string-renderer": "0.5.0",
|
||||
"halogen-xterm": "2.0.0",
|
||||
"heckin": "2.0.1",
|
||||
"heterogeneous": "0.6.0",
|
||||
"homogeneous": "0.4.0",
|
||||
"http-methods": "6.0.0",
|
||||
"httpurple": "4.0.0",
|
||||
"huffman": "0.4.0",
|
||||
"humdrum": "0.0.1",
|
||||
"hyrule": "2.3.8",
|
||||
"identity": "6.0.0",
|
||||
"identy": "4.0.1",
|
||||
"indexed-db": "1.0.0",
|
||||
"indexed-monad": "3.0.0",
|
||||
"int64": "3.0.0",
|
||||
"integers": "6.0.0",
|
||||
"interpolate": "5.0.2",
|
||||
"intersection-observer": "1.0.1",
|
||||
"invariant": "6.0.0",
|
||||
"jarilo": "1.0.1",
|
||||
"jelly": "0.10.0",
|
||||
"jelly-router": "0.3.0",
|
||||
"jelly-signal": "0.4.0",
|
||||
"jest": "1.0.0",
|
||||
"js-abort-controller": "1.0.0",
|
||||
"js-bigints": "2.2.1",
|
||||
"js-date": "8.0.0",
|
||||
"js-fetch": "0.2.1",
|
||||
"js-fileio": "3.0.0",
|
||||
"js-intl": "1.0.4",
|
||||
"js-iterators": "0.1.1",
|
||||
"js-maps": "0.1.2",
|
||||
"js-promise": "1.0.0",
|
||||
"js-promise-aff": "1.0.0",
|
||||
"js-timers": "6.1.0",
|
||||
"js-uri": "3.1.0",
|
||||
"jsdom": "1.0.0",
|
||||
"json": "1.1.0",
|
||||
"json-codecs": "5.0.0",
|
||||
"justifill": "0.5.0",
|
||||
"jwt": "0.0.9",
|
||||
"labeled-data": "0.2.0",
|
||||
"language-cst-parser": "0.14.0",
|
||||
"lazy": "6.0.0",
|
||||
"lazy-joe": "1.0.0",
|
||||
"lcg": "4.0.0",
|
||||
"leibniz": "5.0.0",
|
||||
"leveldb": "1.0.1",
|
||||
"liminal": "1.0.1",
|
||||
"linalg": "6.0.0",
|
||||
"lists": "7.0.0",
|
||||
"literals": "1.0.2",
|
||||
"logging": "3.0.0",
|
||||
"logging-journald": "0.4.0",
|
||||
"lumi-components": "18.0.0",
|
||||
"machines": "7.0.0",
|
||||
"maps-eager": "0.5.0",
|
||||
"marionette": "1.0.0",
|
||||
"marionette-react-basic-hooks": "0.1.1",
|
||||
"marked": "0.1.0",
|
||||
"matrices": "5.0.1",
|
||||
"matryoshka": "1.0.0",
|
||||
"maybe": "6.0.0",
|
||||
"media-types": "6.0.0",
|
||||
"meowclient": "1.0.0",
|
||||
"midi": "4.0.0",
|
||||
"milkis": "9.0.0",
|
||||
"minibench": "4.0.1",
|
||||
"mmorph": "7.0.0",
|
||||
"monad-control": "5.0.0",
|
||||
"monad-logger": "1.3.1",
|
||||
"monad-loops": "0.5.0",
|
||||
"monad-unlift": "1.0.1",
|
||||
"monoid-extras": "0.0.1",
|
||||
"monoidal": "0.16.0",
|
||||
"morello": "0.4.0",
|
||||
"mote": "3.0.0",
|
||||
"motsunabe": "2.0.0",
|
||||
"mvc": "0.0.1",
|
||||
"mysql": "6.0.1",
|
||||
"n3": "0.1.0",
|
||||
"nano-id": "1.1.0",
|
||||
"nanoid": "0.1.0",
|
||||
"naturals": "3.0.0",
|
||||
"nested-functor": "0.2.1",
|
||||
"newtype": "5.0.0",
|
||||
"nextjs": "0.1.1",
|
||||
"nextui": "0.2.0",
|
||||
"node-buffer": "9.0.0",
|
||||
"node-child-process": "11.1.0",
|
||||
"node-event-emitter": "3.0.0",
|
||||
"node-execa": "5.0.0",
|
||||
"node-fs": "9.2.0",
|
||||
"node-glob-basic": "1.3.0",
|
||||
"node-http": "9.1.0",
|
||||
"node-http2": "1.1.1",
|
||||
"node-human-signals": "1.0.0",
|
||||
"node-net": "5.1.0",
|
||||
"node-os": "5.1.0",
|
||||
"node-path": "5.0.0",
|
||||
"node-process": "11.2.0",
|
||||
"node-readline": "8.1.1",
|
||||
"node-sqlite3": "8.0.0",
|
||||
"node-stream-pipes": "2.1.6",
|
||||
"node-streams": "9.0.0",
|
||||
"node-tls": "0.3.1",
|
||||
"node-url": "7.0.1",
|
||||
"node-zlib": "0.4.0",
|
||||
"nonempty": "7.0.0",
|
||||
"now": "6.0.0",
|
||||
"npm-package-json": "2.0.0",
|
||||
"nullable": "6.0.0",
|
||||
"numberfield": "0.2.2",
|
||||
"numbers": "9.0.1",
|
||||
"oak": "3.1.1",
|
||||
"oak-debug": "1.2.2",
|
||||
"object-maps": "0.3.0",
|
||||
"ocarina": "1.5.4",
|
||||
"oooooooooorrrrrrrmm-lib": "0.0.1",
|
||||
"open-colors-scales-and-schemes": "1.0.0",
|
||||
"open-folds": "6.4.0",
|
||||
"open-foreign-generic": "11.0.3",
|
||||
"open-memoize": "6.2.0",
|
||||
"open-mkdirp-aff": "1.2.0",
|
||||
"open-pairing": "6.2.0",
|
||||
"open-smolder": "12.0.2",
|
||||
"options": "7.0.0",
|
||||
"optparse": "5.0.1",
|
||||
"ordered-collections": "3.2.0",
|
||||
"ordered-set": "0.4.0",
|
||||
"orders": "6.0.0",
|
||||
"owoify": "1.2.0",
|
||||
"pairs": "9.0.1",
|
||||
"parallel": "7.0.0",
|
||||
"parsing": "10.2.0",
|
||||
"parsing-dataview": "3.2.4",
|
||||
"partial": "4.0.0",
|
||||
"pathy": "9.0.0",
|
||||
"pha": "0.13.0",
|
||||
"phaser": "0.7.0",
|
||||
"phylio": "1.1.2",
|
||||
"pipes": "8.0.0",
|
||||
"pirates-charm": "0.0.1",
|
||||
"pmock": "0.9.0",
|
||||
"point-free": "1.0.0",
|
||||
"pointed-list": "0.5.1",
|
||||
"polymorphic-vectors": "4.0.0",
|
||||
"posix-types": "6.0.0",
|
||||
"postgresql": "2.0.19",
|
||||
"precise": "6.0.0",
|
||||
"precise-datetime": "7.0.0",
|
||||
"prelude": "6.0.1",
|
||||
"prettier-printer": "3.0.0",
|
||||
"priority-queue": "0.1.2",
|
||||
"profunctor": "6.0.1",
|
||||
"profunctor-lenses": "8.0.0",
|
||||
"protobuf": "4.4.0",
|
||||
"psa-utils": "8.0.0",
|
||||
"psci-support": "6.0.0",
|
||||
"punycode": "1.0.0",
|
||||
"qualified-do": "2.2.0",
|
||||
"quantities": "12.2.0",
|
||||
"quickcheck": "8.0.1",
|
||||
"quickcheck-combinators": "0.1.3",
|
||||
"quickcheck-laws": "7.0.0",
|
||||
"quickcheck-utf8": "0.0.0",
|
||||
"random": "6.0.0",
|
||||
"rationals": "6.0.0",
|
||||
"rdf": "0.1.0",
|
||||
"react": "11.0.0",
|
||||
"react-aria": "0.2.0",
|
||||
"react-basic": "17.0.0",
|
||||
"react-basic-classic": "3.0.0",
|
||||
"react-basic-dnd": "10.1.0",
|
||||
"react-basic-dom": "6.1.0",
|
||||
"react-basic-dom-beta": "0.1.1",
|
||||
"react-basic-emotion": "7.1.0",
|
||||
"react-basic-hooks": "8.2.0",
|
||||
"react-basic-storybook": "2.0.0",
|
||||
"react-dom": "8.0.0",
|
||||
"react-halo": "3.0.0",
|
||||
"react-icons": "1.1.5",
|
||||
"react-markdown": "0.1.0",
|
||||
"react-testing-library": "4.0.1",
|
||||
"react-virtuoso": "1.0.0",
|
||||
"reactix": "0.6.1",
|
||||
"read": "1.0.1",
|
||||
"recharts": "1.1.0",
|
||||
"record": "4.0.0",
|
||||
"record-extra": "5.0.1",
|
||||
"record-ptional-fields": "0.1.2",
|
||||
"record-studio": "1.0.4",
|
||||
"refs": "6.0.0",
|
||||
"remotedata": "5.0.1",
|
||||
"repr": "0.5.0",
|
||||
"resize-observer": "1.0.0",
|
||||
"resource": "2.0.1",
|
||||
"resourcet": "1.0.0",
|
||||
"result": "1.0.3",
|
||||
"return": "0.2.0",
|
||||
"ring-modules": "5.0.1",
|
||||
"rito": "0.3.4",
|
||||
"roman": "0.4.0",
|
||||
"rough-notation": "1.0.2",
|
||||
"routing": "11.0.0",
|
||||
"routing-duplex": "0.7.0",
|
||||
"run": "5.0.0",
|
||||
"safe-coerce": "2.0.0",
|
||||
"safely": "4.0.1",
|
||||
"school-of-music": "1.3.0",
|
||||
"selection-foldable": "0.2.0",
|
||||
"selective-functors": "1.0.1",
|
||||
"semirings": "7.0.0",
|
||||
"signal": "13.0.0",
|
||||
"simple-emitter": "3.0.1",
|
||||
"simple-i18n": "2.0.1",
|
||||
"simple-json": "9.0.0",
|
||||
"simple-json-generics": "0.2.1",
|
||||
"simple-ulid": "3.0.0",
|
||||
"sized-matrices": "1.0.0",
|
||||
"sized-vectors": "5.0.2",
|
||||
"slug": "3.1.0",
|
||||
"small-ffi": "4.0.1",
|
||||
"soundfonts": "4.1.0",
|
||||
"sparse-matrices": "2.0.1",
|
||||
"sparse-polynomials": "3.0.1",
|
||||
"spec": "8.1.0",
|
||||
"spec-discovery": "8.4.0",
|
||||
"spec-mocha": "5.1.1",
|
||||
"spec-node": "0.0.3",
|
||||
"spec-quickcheck": "5.0.2",
|
||||
"spec-reporter-xunit": "0.7.1",
|
||||
"splitmix": "2.1.0",
|
||||
"ssrs": "1.0.0",
|
||||
"st": "6.2.0",
|
||||
"statistics": "0.3.2",
|
||||
"strictlypositiveint": "1.0.1",
|
||||
"string-parsers": "8.0.0",
|
||||
"strings": "6.0.1",
|
||||
"strings-extra": "4.0.0",
|
||||
"stringutils": "0.0.12",
|
||||
"substitute": "0.2.3",
|
||||
"supply": "0.2.0",
|
||||
"svg-parser": "3.0.0",
|
||||
"systemd-journald": "0.3.0",
|
||||
"tagged": "4.0.2",
|
||||
"tailrec": "6.1.0",
|
||||
"tecton": "0.2.1",
|
||||
"tecton-halogen": "0.2.0",
|
||||
"test-unit": "17.0.0",
|
||||
"thermite": "6.3.1",
|
||||
"thermite-dom": "0.3.1",
|
||||
"these": "6.0.0",
|
||||
"threading": "0.0.3",
|
||||
"tldr": "0.0.0",
|
||||
"toestand": "0.9.0",
|
||||
"transformation-matrix": "1.0.1",
|
||||
"transformers": "6.1.0",
|
||||
"tree-rose": "4.0.2",
|
||||
"ts-bridge": "4.0.0",
|
||||
"tuples": "7.0.0",
|
||||
"two-or-more": "1.0.0",
|
||||
"type-equality": "4.0.1",
|
||||
"typedenv": "2.0.1",
|
||||
"typelevel": "6.0.0",
|
||||
"typelevel-lists": "2.1.0",
|
||||
"typelevel-peano": "1.0.1",
|
||||
"typelevel-prelude": "7.0.0",
|
||||
"typelevel-regex": "0.0.3",
|
||||
"typelevel-rows": "0.1.0",
|
||||
"typisch": "0.4.0",
|
||||
"uint": "7.0.0",
|
||||
"ulid": "3.0.1",
|
||||
"uncurried-transformers": "1.1.0",
|
||||
"undefined": "2.0.0",
|
||||
"undefined-is-not-a-problem": "1.1.0",
|
||||
"unfoldable": "6.0.0",
|
||||
"unicode": "6.0.0",
|
||||
"unique": "0.6.1",
|
||||
"unlift": "1.0.1",
|
||||
"unordered-collections": "3.1.0",
|
||||
"unsafe-coerce": "6.0.0",
|
||||
"unsafe-reference": "5.0.0",
|
||||
"untagged-to-tagged": "0.1.4",
|
||||
"untagged-union": "1.0.0",
|
||||
"uri": "9.0.0",
|
||||
"url-immutable": "1.0.0",
|
||||
"uuid": "9.0.0",
|
||||
"uuidv4": "1.0.0",
|
||||
"validation": "6.0.0",
|
||||
"variant": "8.0.0",
|
||||
"variant-encodings": "2.0.0",
|
||||
"vectorfield": "1.0.1",
|
||||
"vectors": "2.1.0",
|
||||
"versions": "7.0.0",
|
||||
"visx": "0.0.2",
|
||||
"web-clipboard": "6.0.0",
|
||||
"web-cssom": "2.0.0",
|
||||
"web-cssom-view": "0.1.0",
|
||||
"web-dom": "6.0.0",
|
||||
"web-dom-parser": "8.0.0",
|
||||
"web-dom-xpath": "3.0.0",
|
||||
"web-encoding": "3.0.0",
|
||||
"web-events": "4.0.0",
|
||||
"web-fetch": "4.0.1",
|
||||
"web-file": "4.0.0",
|
||||
"web-geometry": "0.1.0",
|
||||
"web-html": "4.1.0",
|
||||
"web-pointerevents": "2.0.0",
|
||||
"web-proletarian": "1.0.0",
|
||||
"web-promise": "3.2.0",
|
||||
"web-resize-observer": "2.1.0",
|
||||
"web-router": "1.0.0",
|
||||
"web-socket": "4.0.0",
|
||||
"web-storage": "5.0.0",
|
||||
"web-streams": "4.0.0",
|
||||
"web-touchevents": "4.0.0",
|
||||
"web-uievents": "5.0.0",
|
||||
"web-url": "2.0.0",
|
||||
"web-workers": "1.1.0",
|
||||
"web-xhr": "5.0.1",
|
||||
"webextension-polyfill": "0.1.0",
|
||||
"webgpu": "0.0.1",
|
||||
"which": "2.0.0",
|
||||
"xterm": "1.0.0",
|
||||
"yoga-fetch": "1.0.1",
|
||||
"yoga-json": "5.1.0",
|
||||
"yoga-om": "0.1.0",
|
||||
"yoga-postgres": "6.0.0",
|
||||
"yoga-tree": "1.0.0",
|
||||
"z3": "0.0.2",
|
||||
"zipperarray": "2.0.0"
|
||||
}
|
||||
},
|
||||
"extra_packages": {}
|
||||
},
|
||||
"packages": {
|
||||
"arrays": {
|
||||
"type": "registry",
|
||||
"version": "7.3.0",
|
||||
"integrity": "sha256-tmcklBlc/muUtUfr9RapdCPwnlQeB3aSrC4dK85gQlc=",
|
||||
"dependencies": [
|
||||
"bifunctors",
|
||||
"control",
|
||||
"foldable-traversable",
|
||||
"functions",
|
||||
"maybe",
|
||||
"nonempty",
|
||||
"partial",
|
||||
"prelude",
|
||||
"safe-coerce",
|
||||
"st",
|
||||
"tailrec",
|
||||
"tuples",
|
||||
"unfoldable",
|
||||
"unsafe-coerce"
|
||||
]
|
||||
},
|
||||
"bifunctors": {
|
||||
"type": "registry",
|
||||
"version": "6.0.0",
|
||||
"integrity": "sha256-/gZwC9YhNxZNQpnHa5BIYerCGM2jeX9ukZiEvYxm5Nw=",
|
||||
"dependencies": [
|
||||
"const",
|
||||
"either",
|
||||
"newtype",
|
||||
"prelude",
|
||||
"tuples"
|
||||
]
|
||||
},
|
||||
"console": {
|
||||
"type": "registry",
|
||||
"version": "6.1.0",
|
||||
"integrity": "sha256-CxmAzjgyuGDmt9FZW51VhV6rBPwR6o0YeKUzA9rSzcM=",
|
||||
"dependencies": [
|
||||
"effect",
|
||||
"prelude"
|
||||
]
|
||||
},
|
||||
"const": {
|
||||
"type": "registry",
|
||||
"version": "6.0.0",
|
||||
"integrity": "sha256-tNrxDW8D8H4jdHE2HiPzpLy08zkzJMmGHdRqt5BQuTc=",
|
||||
"dependencies": [
|
||||
"invariant",
|
||||
"newtype",
|
||||
"prelude"
|
||||
]
|
||||
},
|
||||
"contravariant": {
|
||||
"type": "registry",
|
||||
"version": "6.0.0",
|
||||
"integrity": "sha256-TP+ooAp3vvmdjfQsQJSichF5B4BPDHp3wAJoWchip6c=",
|
||||
"dependencies": [
|
||||
"const",
|
||||
"either",
|
||||
"newtype",
|
||||
"prelude",
|
||||
"tuples"
|
||||
]
|
||||
},
|
||||
"control": {
|
||||
"type": "registry",
|
||||
"version": "6.0.0",
|
||||
"integrity": "sha256-sH7Pg9E96JCPF9PIA6oQ8+BjTyO/BH1ZuE/bOcyj4Jk=",
|
||||
"dependencies": [
|
||||
"newtype",
|
||||
"prelude"
|
||||
]
|
||||
},
|
||||
"distributive": {
|
||||
"type": "registry",
|
||||
"version": "6.0.0",
|
||||
"integrity": "sha256-HTDdmEnzigMl+02SJB88j+gAXDx9VKsbvR4MJGDPbOQ=",
|
||||
"dependencies": [
|
||||
"identity",
|
||||
"newtype",
|
||||
"prelude",
|
||||
"tuples",
|
||||
"type-equality"
|
||||
]
|
||||
},
|
||||
"effect": {
|
||||
"type": "registry",
|
||||
"version": "4.0.0",
|
||||
"integrity": "sha256-eBtZu+HZcMa5HilvI6kaDyVX3ji8p0W9MGKy2K4T6+M=",
|
||||
"dependencies": [
|
||||
"prelude"
|
||||
]
|
||||
},
|
||||
"either": {
|
||||
"type": "registry",
|
||||
"version": "6.1.0",
|
||||
"integrity": "sha256-6hgTPisnMWVwQivOu2PKYcH8uqjEOOqDyaDQVUchTpY=",
|
||||
"dependencies": [
|
||||
"control",
|
||||
"invariant",
|
||||
"maybe",
|
||||
"prelude"
|
||||
]
|
||||
},
|
||||
"exists": {
|
||||
"type": "registry",
|
||||
"version": "6.0.0",
|
||||
"integrity": "sha256-A0JQHpTfo1dNOj9U5/Fd3xndlRSE0g2IQWOGor2yXn8=",
|
||||
"dependencies": [
|
||||
"unsafe-coerce"
|
||||
]
|
||||
},
|
||||
"foldable-traversable": {
|
||||
"type": "registry",
|
||||
"version": "6.0.0",
|
||||
"integrity": "sha256-fLeqRYM4jUrZD5H4WqcwUgzU7XfYkzO4zhgtNc3jcWM=",
|
||||
"dependencies": [
|
||||
"bifunctors",
|
||||
"const",
|
||||
"control",
|
||||
"either",
|
||||
"functors",
|
||||
"identity",
|
||||
"maybe",
|
||||
"newtype",
|
||||
"orders",
|
||||
"prelude",
|
||||
"tuples"
|
||||
]
|
||||
},
|
||||
"functions": {
|
||||
"type": "registry",
|
||||
"version": "6.0.0",
|
||||
"integrity": "sha256-adMyJNEnhGde2unHHAP79gPtlNjNqzgLB8arEOn9hLI=",
|
||||
"dependencies": [
|
||||
"prelude"
|
||||
]
|
||||
},
|
||||
"functors": {
|
||||
"type": "registry",
|
||||
"version": "5.0.0",
|
||||
"integrity": "sha256-zfPWWYisbD84MqwpJSZFlvM6v86McM68ob8p9s27ywU=",
|
||||
"dependencies": [
|
||||
"bifunctors",
|
||||
"const",
|
||||
"contravariant",
|
||||
"control",
|
||||
"distributive",
|
||||
"either",
|
||||
"invariant",
|
||||
"maybe",
|
||||
"newtype",
|
||||
"prelude",
|
||||
"profunctor",
|
||||
"tuples",
|
||||
"unsafe-coerce"
|
||||
]
|
||||
},
|
||||
"identity": {
|
||||
"type": "registry",
|
||||
"version": "6.0.0",
|
||||
"integrity": "sha256-4wY0XZbAksjY6UAg99WkuKyJlQlWAfTi2ssadH0wVMY=",
|
||||
"dependencies": [
|
||||
"control",
|
||||
"invariant",
|
||||
"newtype",
|
||||
"prelude"
|
||||
]
|
||||
},
|
||||
"invariant": {
|
||||
"type": "registry",
|
||||
"version": "6.0.0",
|
||||
"integrity": "sha256-RGWWyYrz0Hs1KjPDA+87Kia67ZFBhfJ5lMGOMCEFoLo=",
|
||||
"dependencies": [
|
||||
"control",
|
||||
"prelude"
|
||||
]
|
||||
},
|
||||
"leibniz": {
|
||||
"type": "registry",
|
||||
"version": "5.0.0",
|
||||
"integrity": "sha256-2tdNZoUjAU5cIdDqpx+r80z4spnx0bIRwYzpC3mDE9E=",
|
||||
"dependencies": [
|
||||
"prelude",
|
||||
"unsafe-coerce"
|
||||
]
|
||||
},
|
||||
"maybe": {
|
||||
"type": "registry",
|
||||
"version": "6.0.0",
|
||||
"integrity": "sha256-5cCIb0wPwbat2PRkQhUeZO0jcAmf8jCt2qE0wbC3v2Q=",
|
||||
"dependencies": [
|
||||
"control",
|
||||
"invariant",
|
||||
"newtype",
|
||||
"prelude"
|
||||
]
|
||||
},
|
||||
"newtype": {
|
||||
"type": "registry",
|
||||
"version": "5.0.0",
|
||||
"integrity": "sha256-gdrQu8oGe9eZE6L3wOI8ql/igOg+zEGB5ITh2g+uttw=",
|
||||
"dependencies": [
|
||||
"prelude",
|
||||
"safe-coerce"
|
||||
]
|
||||
},
|
||||
"nonempty": {
|
||||
"type": "registry",
|
||||
"version": "7.0.0",
|
||||
"integrity": "sha256-54ablJZUHGvvlTJzi3oXyPCuvY6zsrWJuH/dMJ/MFLs=",
|
||||
"dependencies": [
|
||||
"control",
|
||||
"foldable-traversable",
|
||||
"maybe",
|
||||
"prelude",
|
||||
"tuples",
|
||||
"unfoldable"
|
||||
]
|
||||
},
|
||||
"orders": {
|
||||
"type": "registry",
|
||||
"version": "6.0.0",
|
||||
"integrity": "sha256-nBA0g3/ai0euH8q9pSbGqk53W2q6agm/dECZTHcoink=",
|
||||
"dependencies": [
|
||||
"newtype",
|
||||
"prelude"
|
||||
]
|
||||
},
|
||||
"partial": {
|
||||
"type": "registry",
|
||||
"version": "4.0.0",
|
||||
"integrity": "sha256-fwXerld6Xw1VkReh8yeQsdtLVrjfGiVuC5bA1Wyo/J4=",
|
||||
"dependencies": []
|
||||
},
|
||||
"prelude": {
|
||||
"type": "registry",
|
||||
"version": "6.0.1",
|
||||
"integrity": "sha256-o8p6SLYmVPqzXZhQFd2hGAWEwBoXl1swxLG/scpJ0V0=",
|
||||
"dependencies": []
|
||||
},
|
||||
"profunctor": {
|
||||
"type": "registry",
|
||||
"version": "6.0.1",
|
||||
"integrity": "sha256-E58hSYdJvF2Qjf9dnWLPlJKh2Z2fLfFLkQoYi16vsFk=",
|
||||
"dependencies": [
|
||||
"control",
|
||||
"distributive",
|
||||
"either",
|
||||
"exists",
|
||||
"invariant",
|
||||
"newtype",
|
||||
"prelude",
|
||||
"tuples"
|
||||
]
|
||||
},
|
||||
"refs": {
|
||||
"type": "registry",
|
||||
"version": "6.0.0",
|
||||
"integrity": "sha256-Vgwne7jIbD3ZMoLNNETLT8Litw6lIYo3MfYNdtYWj9s=",
|
||||
"dependencies": [
|
||||
"effect",
|
||||
"prelude"
|
||||
]
|
||||
},
|
||||
"safe-coerce": {
|
||||
"type": "registry",
|
||||
"version": "2.0.0",
|
||||
"integrity": "sha256-a1ibQkiUcbODbLE/WAq7Ttbbh9ex+x33VCQ7GngKudU=",
|
||||
"dependencies": [
|
||||
"unsafe-coerce"
|
||||
]
|
||||
},
|
||||
"st": {
|
||||
"type": "registry",
|
||||
"version": "6.2.0",
|
||||
"integrity": "sha256-z9X0WsOUlPwNx9GlCC+YccCyz8MejC8Wb0C4+9fiBRY=",
|
||||
"dependencies": [
|
||||
"partial",
|
||||
"prelude",
|
||||
"tailrec",
|
||||
"unsafe-coerce"
|
||||
]
|
||||
},
|
||||
"tailrec": {
|
||||
"type": "registry",
|
||||
"version": "6.1.0",
|
||||
"integrity": "sha256-Xx19ECVDRrDWpz9D2GxQHHV89vd61dnXxQm0IcYQHGk=",
|
||||
"dependencies": [
|
||||
"bifunctors",
|
||||
"effect",
|
||||
"either",
|
||||
"identity",
|
||||
"maybe",
|
||||
"partial",
|
||||
"prelude",
|
||||
"refs"
|
||||
]
|
||||
},
|
||||
"tuples": {
|
||||
"type": "registry",
|
||||
"version": "7.0.0",
|
||||
"integrity": "sha256-1rXgTomes9105BjgXqIw0FL6Fz1lqqUTLWOumhWec1M=",
|
||||
"dependencies": [
|
||||
"control",
|
||||
"invariant",
|
||||
"prelude"
|
||||
]
|
||||
},
|
||||
"type-equality": {
|
||||
"type": "registry",
|
||||
"version": "4.0.1",
|
||||
"integrity": "sha256-Hs9D6Y71zFi/b+qu5NSbuadUQXe5iv5iWx0226vOHUw=",
|
||||
"dependencies": []
|
||||
},
|
||||
"typelevel-prelude": {
|
||||
"type": "registry",
|
||||
"version": "7.0.0",
|
||||
"integrity": "sha256-uFF2ph+vHcQpfPuPf2a3ukJDFmLhApmkpTMviHIWgJM=",
|
||||
"dependencies": [
|
||||
"prelude",
|
||||
"type-equality"
|
||||
]
|
||||
},
|
||||
"unfoldable": {
|
||||
"type": "registry",
|
||||
"version": "6.0.0",
|
||||
"integrity": "sha256-JtikvJdktRap7vr/K4ITlxUX1QexpnqBq0G/InLr6eg=",
|
||||
"dependencies": [
|
||||
"foldable-traversable",
|
||||
"maybe",
|
||||
"partial",
|
||||
"prelude",
|
||||
"tuples"
|
||||
]
|
||||
},
|
||||
"unsafe-coerce": {
|
||||
"type": "registry",
|
||||
"version": "6.0.0",
|
||||
"integrity": "sha256-IqIYW4Vkevn8sI+6aUwRGvd87tVL36BBeOr0cGAE7t0=",
|
||||
"dependencies": []
|
||||
}
|
||||
}
|
||||
}
|
23
spago.yaml
Normal file
23
spago.yaml
Normal file
|
@ -0,0 +1,23 @@
|
|||
package:
|
||||
name: singletons
|
||||
dependencies:
|
||||
- arrays
|
||||
- console
|
||||
- effect
|
||||
- exists
|
||||
- maybe
|
||||
- prelude
|
||||
- typelevel-prelude
|
||||
- leibniz
|
||||
test:
|
||||
main: Test.Main
|
||||
dependencies: []
|
||||
workspace:
|
||||
packageSet:
|
||||
registry: 60.6.0
|
||||
extraPackages: {}
|
||||
backend:
|
||||
cmd: 'purs-backend-es'
|
||||
args:
|
||||
- 'build'
|
||||
|
11
src/Main.purs
Normal file
11
src/Main.purs
Normal file
|
@ -0,0 +1,11 @@
|
|||
module Main where
|
||||
|
||||
import Prelude
|
||||
|
||||
import Effect (Effect)
|
||||
import Effect.Console (log)
|
||||
|
||||
main :: Effect Unit
|
||||
main = do
|
||||
log "🍝"
|
||||
|
85
src/Singletons.purs
Normal file
85
src/Singletons.purs
Normal file
|
@ -0,0 +1,85 @@
|
|||
module Singletons where
|
||||
|
||||
import Control.Category (identity, (<<<))
|
||||
import Data.Exists (Exists, mkExists, runExists)
|
||||
import Data.Function (flip, (#))
|
||||
import Data.Leibniz (type (~), runLeibniz, symm)
|
||||
|
||||
data Nat
|
||||
= Zero
|
||||
| Succ Nat
|
||||
|
||||
foreign import data PZero :: Nat
|
||||
foreign import data PSucc :: Nat -> Nat
|
||||
|
||||
type POne = PSucc PZero
|
||||
type PTwo = PSucc POne
|
||||
type PThree = PSucc PTwo
|
||||
|
||||
data Prev p q = Prev (SNat q) (p ~ PSucc q)
|
||||
|
||||
data SNat p
|
||||
= SZero (p ~ PZero)
|
||||
| SSucc (Exists (Prev p))
|
||||
|
||||
-- Type -> Term
|
||||
reflect :: forall @p. SNatOf p => Nat
|
||||
reflect = reflect' (snat @p)
|
||||
|
||||
reflect' :: forall p. SNat p -> Nat
|
||||
reflect' = case _ of
|
||||
SZero _ -> Zero
|
||||
SSucc p -> p # runExists \ (Prev s _) -> Succ (reflect' s)
|
||||
|
||||
-- Term -> Type
|
||||
-- Why DOES this NOT work
|
||||
-- reify :: forall r. (forall p. SNatOf p => r) -> Nat -> r
|
||||
-- reify x n = runExists (withDNat x) (toSomeNat n)
|
||||
|
||||
-- Isomorphic to Nat
|
||||
type SomeNat = Exists SNat
|
||||
|
||||
fromSomeNat :: SomeNat -> Nat
|
||||
fromSomeNat = runExists reflect'
|
||||
|
||||
toSomeNat :: Nat -> SomeNat
|
||||
toSomeNat Zero = mkExists (SZero identity)
|
||||
toSomeNat (Succ n) = toSomeNat n # runExists \sn -> mkExists (SSucc (mkExists (Prev sn identity)))
|
||||
|
||||
-- Easy to apply Nat ops to SomeNat
|
||||
ssucc :: SomeNat -> SomeNat
|
||||
ssucc = toSomeNat <<< Succ <<< fromSomeNat
|
||||
|
||||
newtype DNat p = DNat (forall r. (SNatOf p => r) -> r)
|
||||
|
||||
captureDNat :: forall @p. SNatOf p => DNat p
|
||||
captureDNat = DNat \r -> r
|
||||
|
||||
provideDNat :: forall p r. (SNatOf p => r) -> DNat p -> r
|
||||
provideDNat = flip unDNat
|
||||
|
||||
unDNat :: forall p r. DNat p -> (SNatOf p => r) -> r
|
||||
unDNat (DNat f) = f
|
||||
|
||||
dNat :: forall p. SNat p -> DNat p
|
||||
dNat s = DNat (\x -> withDNat x s)
|
||||
|
||||
withDNat :: forall p r. (SNatOf p => r) -> SNat p -> r
|
||||
withDNat x sn = case sn of
|
||||
SZero w -> unDNat (runLeibniz (symm w) (captureDNat @PZero)) x
|
||||
SSucc e -> e # runExists \ (Prev _ w) -> unDNat (runLeibniz (symm w) (dNat (runLeibniz w sn))) x
|
||||
|
||||
zero :: SNat PZero
|
||||
zero = SZero identity
|
||||
|
||||
succ :: forall p. SNatOf p => SNat p -> SNat (PSucc p)
|
||||
succ _ = snat @(PSucc p)
|
||||
|
||||
class SNatOf p where
|
||||
snat :: SNat p
|
||||
|
||||
instance SNatOf PZero where
|
||||
snat = SZero identity
|
||||
instance SNatOf p => SNatOf (PSucc p) where
|
||||
snat = SSucc (mkExists (Prev (snat @p) identity))
|
||||
|
12
test/Test/Main.purs
Normal file
12
test/Test/Main.purs
Normal file
|
@ -0,0 +1,12 @@
|
|||
module Test.Main where
|
||||
|
||||
import Prelude
|
||||
|
||||
import Effect (Effect)
|
||||
import Effect.Class.Console (log)
|
||||
|
||||
main :: Effect Unit
|
||||
main = do
|
||||
log "🍕"
|
||||
log "You should add some tests."
|
||||
|
Loading…
Reference in a new issue