{"id":15493485,"url":"https://github.com/sinclairzx81/ts-8-bit","last_synced_at":"2025-04-22T19:50:15.618Z","repository":{"id":66035007,"uuid":"314849064","full_name":"sinclairzx81/ts-8-bit","owner":"sinclairzx81","description":"Using TypeScript's Type System to do 8-bit Arithmetic","archived":false,"fork":false,"pushed_at":"2020-11-27T10:40:49.000Z","size":109,"stargazers_count":37,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-10-03T08:06:56.559Z","etag":null,"topics":["8-bit","arithmetic","conditional-types","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sinclairzx81.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"license","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-11-21T16:01:35.000Z","updated_at":"2024-04-19T20:30:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"46f6c988-7249-447a-93cc-18bd356498e7","html_url":"https://github.com/sinclairzx81/ts-8-bit","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinclairzx81%2Fts-8-bit","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinclairzx81%2Fts-8-bit/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinclairzx81%2Fts-8-bit/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sinclairzx81%2Fts-8-bit/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sinclairzx81","download_url":"https://codeload.github.com/sinclairzx81/ts-8-bit/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250313526,"owners_count":21410242,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["8-bit","arithmetic","conditional-types","typescript"],"created_at":"2024-10-02T08:07:08.795Z","updated_at":"2025-04-22T19:50:15.605Z","avatar_url":"https://github.com/sinclairzx81.png","language":"TypeScript","readme":"\u003cdiv align='center'\u003e\n\n\u003ch1\u003eTS-8-bit\u003c/h1\u003e\n\n\u003cp\u003eUsing TypeScript's Type System to do 8-bit Arithmetic\u003c/p\u003e\n\u003c/div\u003e\n\n```typescript\nimport { \n    Byte, Num, Add, Sub, Mul, Div, Mod, Eq, Lt, Gt, Lte, Gte, Lsh, Rsh, And, Xor, Or, Not \n} from './ts-8-bit'\n\n// Arithmetic\ntype A = Num\u003c Add \u003c Byte\u003c12\u003e, Byte\u003c22\u003e \u003e \u003e  // + type A = 34\ntype B = Num\u003c Sub \u003c Byte\u003c47\u003e, Byte\u003c12\u003e \u003e \u003e  // - type B = 35\ntype C = Num\u003c Mul \u003c Byte\u003c31\u003e, Byte\u003c4\u003e  \u003e \u003e  // * type C = 124\ntype D = Num\u003c Div \u003c Byte\u003c16\u003e, Byte\u003c8\u003e  \u003e \u003e  // / type D = 2\ntype E = Num\u003c Mod \u003c Byte\u003c19\u003e, Byte\u003c4\u003e  \u003e \u003e  // % type E = 3\n\n// Equality\ntype F = Eq \u003c Byte\u003c10\u003e, Byte\u003c10\u003e \u003e          // == type F = true\ntype G = Lt \u003c Byte\u003c10\u003e, Byte\u003c10\u003e \u003e          // \u003c  type G = false\ntype H = Gt \u003c Byte\u003c20\u003e, Byte\u003c10\u003e \u003e          // \u003e  type H = true\ntype I = Lte\u003c Byte\u003c10\u003e, Byte\u003c10\u003e \u003e          // \u003c= type I = true\ntype J = Gte\u003c Byte\u003c20\u003e, Byte\u003c10\u003e \u003e          // \u003e= type J = true\n\n// Bitwise\ntype K = Num\u003c Rsh \u003c Byte\u003c64\u003e, 3 \u003e \u003e         // \u003e\u003e type K = 8\ntype L = Num\u003c Lsh \u003c Byte\u003c23\u003e, 2 \u003e \u003e         // \u003c\u003c type L = 92\ntype M = Num\u003c Or  \u003c Byte\u003c33\u003e, Byte\u003c7\u003e \u003e \u003e   // |  type M = 39 \ntype N = Num\u003c And \u003c Byte\u003c12\u003e, Byte\u003c5\u003e \u003e \u003e   // \u0026  type N = 4\ntype O = Num\u003c Xor \u003c Byte\u003c22\u003e, Byte\u003c17 \u003e \u003e \u003e // ^  type O = 7\ntype P = Num\u003c Not \u003c Byte\u003c253\u003e \u003e \u003e           // !  type P = 2\n```\n\n## Overview\n\nts-8-bit is an experimental library that does 8-bit arithmetic on TypeScript's type system. It does so by applying bitwise operations on tuples of length 8 (1 byte) and leverages TypeScript conditional type inference to give the result. This project was written as a exercise in TypeScript and is offered as is for anyone who may find it of use.\n\nRequires TypeScript 4.1.2 and above. Example link [here](https://www.typescriptlang.org/play?#code/PTAEFpK6dv4YpcBQJQc6A+rv2d8tM9iTiCCM0xiAfXE7MfO4l0AHTLbYwApsASlB8aZTL1GhBjfNjaCRDVqMY5eBcROl9OpffIB8OUAB55C0AHICnKbjraJUwrmVZFw6Z7UfNoM48Vip4tFiGzMEAdLjADHSGTug6qWnpZEEAqgDOAJYAdgDmoAAuABYApqAAKgCeAA6VAMoAxgBOeQ2lZY3VOXU5pZUAtqAAZgD27aAAHOAARnk9AIadFSOVpXmtNEEZmPkFrQA2K3kzAEwADDfSALIAkjV7KRLlpaUNOQBcIEXLcoAVwW0VakxGwCOp3O7QAXgAPWYARmApRy4HmSx6B1xGX2eMJWHEyFJZPJFKgKGp4gAgutypttrtSn1QLTQABeUAAOSBIzM7IAJkLzKAAEJ1YZmZGXIwAGglUsqZkuctAJhMoHQrKa7K5oAAzAAWFC66rig18gWgZogsWS6XGgDsCqV0tlmo1GB1bMt3MNAFYzWyAMJW-mC+5Ak4O5VmQ3It2OlXGrVe7Vgc2gcPc2Wm7MAEQjNsLeQAbnGPQA2ZPx2bp72Z3p64vcy4hvUAURLUcmosFKZlAE4607G1rfd2DYbqeguwBHIErE7LOqd6oAMQNi6rKuR1zH+8PTZ0U63BtK7SBlQ3oAA4gaADI9Qfxg9HmUnrVnrNsx-cuMK45Le2YABIGver7uiqNyfh+p4SOeoAQdyV43nejzPtKMFfvB35pMhWFodeoFsgAUpBOFDnBipDghP5IX+eqUSRGHiOKywAO55CBd4ANK9qAABKOTlHuZjVmmiqGt6jHsMx1SCdysx3k+QlPmJEmXIabqXHJqTIep3LDh22b3EJADyMwSYaul0fGroGT6imgBZAbDoE2Y8kJtIFAOuGeg50qBl6P7IT53IFmyllCQAGtM2lysF+7OgZJjIbF3LOneAAKQk8pM0E0YGunOYZrn5e2c5gJueRwnC4pAg1d51Q1TUNWYNSgJUCLDP5OS4SsBR1EYJjcigACQbn9l1KVmKFJi9f1QqDUOJ4APyBNN9yzTU826UtfWVANuGbTY4z1XCCzNXC1igD8Ng3Q190-FNM1CnNuGHT1x2netJhbdYl0vcQj3WNY1LZjUyIYNybWNbdb4ehmmDITDBoAESY3eNT6QaCMdXCyOwajLkttUeNYzj0OyQTV1EyTCZk82tNYyDcI02yNTGnDoCE0juFpohrPc7z3LY7jgZ8wLnW4aFIvo9LEvPZzuPVjLDOC0OtaK65NTK6AmMczj6DRObPWlK0lsstzyKG7LxOBQrjHo-b7NXarOMkpSvt+77HHLD7-sh6H8DUr1DTTD02acT03LXNIyI1RAYdp+n4j3isww5MH6f537EcIlH7Qx36yyFaUXW-Sta3LONKBYN1y0natoCJ1tsNvU3Net4NsNbYn3eYAUlTlpU7RFyXZd6nHfmfc3f1twA2nHdHLAAug3Pct6dy-XIq1wb6Ag8PY3mCL7XoD74qyLH6fw8YJfffX8ih-3+3Z870vg3L2-oB3xPgAr+I8x4TyntHCmEpljWWrrvFea9oGlC3lyc+T9e57wPu3D+Q80G1AwSvLBgDO4gPQfA3+-8j5AK7ng5+e9-7EOAY-UAo9x6TxQJHSBsdlgJXaHAn+19EFxxQZyWhBDf5YKoQ-MR5Dr5EI-jQ7+V8-7v2oaQ-BsiVEAJweo1h4C84F0MWScQjxhjtGztMAxRjrEIAgaXKBjx-K9QNAAa0qHUSY4xQCmInhYyenD7HZlyu0Me-Cr5uI8V4nx5jSjTHGt4sxfjl41A3vvDeHDi5cLZDyZaYSX4RM8Qk3xsT2jxOiUklJf90kBJntUcpJSDQAG88HXEesvZ0t8N6KjwciNpWDLhdMwHgy4bT-6GkGdQLAho2mXEVMaCZgQsDGjaYaRUgYFl4MDG040ipqwbKwNWNpgZFTOn2ZgZ0bTqzv0VNQAAvinGxjzECB1KDxPi6AnmfNgHY2pvIip5L3kI5Y69SggrBUg8Fwj4nLzwXHSuXU0kKlhRXf5NQqlIqwHC1Fy8BkYswFiquaLxl4owAShF8ySVIPhWi9ZlKyVor2XSlFhL2lb3lCgdJGTp5QPnmYPBHJNFAtBRCkVQrIWb3ZZi8RgjgWitlWKuVwrhEoGhci0ovLl60jSXRNJbK1Uaq1XfHVd89WYuWAanFgzxSWtNfi81-kzCauXuMnV4zbWkvtZ9J18ydXzPdUgi16ydXrP9XPB1Tq9k6r2aGz1jqtWnJ1acvVnKalQNgfy6Vq95XZqVTm8VubkGSvxZmhVpa82KvSaqs1pRYFOqPjqo+Maa18KdUaiUVSm21q1QMnVAzO0tq1S69tbqmXNrjcvH17a-Wjq7cvIN7aQ0zoHcvSN7bo1LvHQm9tSakUpsyYEtkvC+VYAFQIrNBb82XorUW0lJby1lovRWlVBoYXVqPavbV7JdWjvfdatthqN5Nt-ZaxU3bAM-umI661Q7B3gZvUg4Dk6tXTvg3HYD86tWLtQzwyDH7V1avXdh0owGt3xrgxyn5UDRLlABQg+99HH1CsGVhWRjihS9W3pgFjAiO74MetRx1aK21op7bUZ1gy0WTppRJldMmt31tAME0JjwxqUezJpGjdC6OMYY1e4RipuNXzYxx1BWBDMv1491R6GnHVYLRQpoTMnRNEpk1JudMno2KiU+WMwKmjA0g+V8oL4BxCLmXKuVkVjgvWLU2yRcx7MCnuUQ+vTDGumwrvTprLqXkHPu5Ell+lotroWqI9ICJw+JcqyXqF8lkGgJYwAVwFunFU5fS1KwVLWUvXrweZ06xmER5f1LIorExgKlbwU6x4Vrl7TePpoyRH9av1dpHRLzISfN+fUVNmbc3M0MKWzWlba3FMbd82NbbWrps6r25oyhH9ysgUu7N3bgHM3yKASV9Rj3bxVYPTVquGbOvZda6D-TGXgc5ah0g9L8TltmFWxKE5-m-u-JfCqIHZ7uvY5ze14tkOwdddx+y6F8XEfijdC+BHdEjDzbPSVxUP2P5feYcvMnNPFRU-J7TzNP3FQleZ6RB6izMA-di3qKCdWGvDax0TkHTHUOZehzjwtvXpUDaG01tuo2fvPeu+227Z7FtAMl8dpHp3lMXdZ1d17dPlEHZN0d6n5vvPnZMNbl7N23sLc6UA3XHv9fWsN-b1RxWhfMLF6jqBUFpda9-ir5XEqIey-l3LkFsOqJS-J8j8X1QoIY5PUrwnqeC149vQThPxeM-cjZwuZ3FPFQx+53bl+y8GdjYq5UQXN5tvs4lG6JvNOW97z52UUi3fSsi4wJHwL0Wnl0hFMsPIkwChRbnwXXP-MYwnFpCKCetH49pc42Qo3h9Q9yNUcwrTFCz-YKAVoqhV-3u33Pw-4+T+7sv7v1tG+2j1HX4v3bl9x-3u3-321v0YV-0AQ-1PwAWAMAOgJkTPQYXgK0UQKwD0XYVTWzF3yFCl0x2SzT2L3T0VwryIIfTL28XVycQRHg1ihGyDniU3G31wP31fUS09wN0oL6zbl4yHmFDwLN3FHW0t1vn8y3mXksj3W5RwJFFjyL0rwoNIJT0TxL0rRfX5RFCzxO0kUpVwO0PN0oT0K0KEMVFmXbmMMEPrxkkPksIMOENAB2QsPg30NMNAGOWcM0KsOz1ACuU8JPRMOsNAA6U8M5Vn3Xxi3QDtAWCvBWFaG2BXzXwiLTk32YJOBOGiNiPiMgwAPPXzRESQOUUkVf2NxgJDyAO-1fkv0KNbyIVfwdzKNbxQMqN-0fxqMwQgI-jQPf3aJXkoVQNKN6IkS-0gI+0aPoRGK6IaLwUwM32iPwMLzIJLza2UMIOWOIJh3gx4MGgGzoOlTjiGzSIyJBCyJKUdX5U4KD24OlT4OF3mLcNdxUzEI5SMEkOkOq2qGiPkKWNUPyNWNb0ULl3UJrzwXuKCN0PgzBJ8KMMhJBHsLMNsNhIWHhKNERNBLhLcKcMPCRJRI8OxPRORLcL8PxKwChJOxCPxLCLAGSJsXEGjBOG2AaBOHXHCJpPzk33pIWMSwUPILS26Q6xUI2JV0oPDB+KFL5Kn1AGLDFMBNLxJ2wjMFDEVELCOivi+y2k5JWzkO5xO1wMVPmiTDdBVOF1pA5JjG+MFNlL+OTzWN+Kr3lO5E1LMABlA3mmxP7weTZMMXEDLHLF4mX1X1ZK9LDk319K5Max5PWKUJtIBN5LUPg1FMtLjOtPiXz3r1VJfnVKlIrCly+J1PNz1KVMCjGndxzFDIrAtNtPFPjJjOayjKBKGzDLcIBhRyDODJDjpP7BjEmCSPbMpA5P7HDJlyrKtJ6wFJHOTLHMwETInPrKy2rwfGlG52lSzN2isLzI5wLLkKLPohLJNIHM+gINjLnJWNrO0ztIoKGzXJRJbM9L7JDPQFDBXzYTMVzjbPvP7LvGaHqkqFhhfSPi-J-Pxhr3NmiG-LhF-MVFAvAt-PSWzBgrphAvNhgvMOgqArgrZBgt5hfTQogtWVAFwsqHGUAogulhwuQp-KcMIvmRIsqA1nIrAp-I8MIvWVorSgYpgr8MIr2VotmD5mXkIpCMEuqX3V+WtAPxlRPKryrUwFAvs2HzbgHltB-K7mvkoLkqqWlSUpQuF2XnUvNhEwUv7iAQQt0v0uiBcy0pMsorMvgw0vmSsq2hguljaXMuk0cuUogo1lcrsoMtkw8pgrSh8rwQ0tOQCp-L4uCtSWsBOBOiKAqGsHeP+wtHjAAIKH5AWAnmPw0R4wwB-2KIqIKqKp6KURfj-JANvyKsquqNKtOnxnyq-yqsKpqovmlTpgqrgOaq6sGNqrbmwoaoqP6O6papPyvjIo6rqOGsKpKtatkXooGuaKap6tmoEXYo6sWuqumrANkT4vvyaqGuKu2oEU8nvwOsas2raN6v7l4ygIgIupGpyqvmRCUrQLuqmsupWqev0gGsmrOq2vGMUtkgmpGPurvwBv7l5gWpBvepmtGrKulnWuhqWthserKo1h+s2r+o+rhtOmRDSmBq6qxpRoAORD4qhsJouuJq0s8kRopu6qptkTuAxs6smsOvBtAEuBeqGu5spqOqvjVD2qRvOv+qGI5qBqqM6p5vpr5pfkuEhsAIKo2pFquo5oRolsVuFuWpxrbkuHRoQLeqJplrqvxolqlsNvZsuDJoVuhvNtFsuBpvVptt5vZsNBut+qFuVs+pfkTFOqdpZsqoZoEUNG+utqmoOsDqvjsl9ves1oju9vlturDoDqNrbiDGjqxtjpTsGkND1taM1szpdpNof3zv9rBtFsNCtsTr+vDqzqNAdtetLtZoeoAONDdsxreq1tRtOmNC5vbsGuTvZuNBDsTqbsbrju7vFobtHprsHoTo1tLpntFuNDVuLslo7ubulWNFzvdoXoHqXqLuaKVsXpVuNErqWo9uxq7r6vrozrXs9u1sGkDDbsbovvHrbkDF7pfrvs7oAMDGHvnp3p-ulVKmjunoLtFsDDno9qVsvt-pXsPoNr3pVsDG3r7pgbfsfoPrQfAeQbPuFoQfvqvsfpvvwdftrurGfp3vQfIc-qoZwa9tOmrH-r9uofZurEnoIYIaAbmqgZjv7rLpVurHgdBoAYwd8NQa-tEfIawckY7rEerDwf4f2o3rmpIaUb7tgelWdGfpgbkdrudE-t0aUbEedGYbpqkfZudA4Y0b0csd4alosdFudGEd3vMZMYkcAdsacZkc8eMf0cUa4a8ZVudDUcCb8fZtmEoZsZZrEZRFAeidAIibMerqCYYbblmGsa-ocdid4bAfCdFtmBcbydZtiYkaPtSYfrmBkfKfyZVtmEUfnuydrtmDUcaYqaIdAGHB0cQdqbScGmHEMZ6ZKdrtMkFv4Zqc0dkWHEybod6cqeHHsb9uGfZuHBcc4faYAOHA8dBsWrEeHB8Z2car2YCcOZiZGdCdOcSdFoPCiayaOdroPFoZLt2YeduDGaMZefZoPEyY+fua+euFyfXu-rEYPCKaBc+eueuDKfBb+cheqZhbOf+YaegdhZVoPFaZRcReuYPHecxaubReevTrxZUYEWerMeUeBYeeRBmewaxYJcWbpohYJbWdpfxb6YAWRG2dcaZfZeeoOe5dRd5dJtxYFbpaFYudFbZcqdlFudmalY6dlCefGaRpBYFvJrlZJa+p+Z6Z5elblrGY1bFb1bBbvq4dVehdNZVYecuHhctcpa+ctoNZEc6OtYxb4bGOuddpFfPsGpBZ9tpp9Y9bReDqddkd9YeajoJtvqDd5ZNBFejd9y+bTtpoTb-yTa5dHsVr9f5czZdaTZOfUcJr9YldzfDa+dbtDaMZjelZ7vie-sxpBaHvjZLurYVeNG1fraLYeeNEBfMbzeueXrrYAf7bRa3u9aBdbZJpdCJb7bLYHeRdcaze7bdYcZHd5afubcLcna0o-pndXbnbRb-tDd8e3dkXthpeVa7a+cgfHc7dPdJcDBZcvaXeva5bCfvaesDH5ffcTeucDALZ-bTb-YlcA-QN5YoePYSZBerCVYpY-bRuSdOfg9xvYZnbg9-bRakkrag4eaEbrZSYPfA4tYI+Q8UurFtZI4w-A4XeKao+lerDddo6A7Re0dvf3bA+lYMbQ9IcI84-JcxdI-7isfw548E4AWdAZYmbo4Vecb3dE+k5JudAzaGYU60udBzZU+Y95edALbad45k5Lc0444Vciew+fdU7PbiajaM5BdmEQ9FbE9Jo7bNrXeldmF7dmcc8KaHaWYs9JdmAtc8786etmFtaC607c4XfWf05JpaZE7tcc66c3bCeM5JoGbk4S+C7KtGeZp9emLRemZ86Toi4VYWdvYpdS+pqfby6y9xq2bM4q5Bf2fi8a4eeHAA8uaa5A869rpuFleedq51uuFg4G5K4AJuHs9Lfy-ZZuA7am8G8GhuF7d+bG+lRuBNZW8q8ZqheS7QbEZuAo9G624ERuBo4ReO-5uuEY-O-25xfVZu968JYDYe4ttlAa544u9lupZa4+9u8k5e7tvdhTYB5Vs5uU87em8qc5o04h4W45uFfu9h9W8ZuREM6R8+7qqZtDpS7h7VCVZx+R5O7Vf1sy8lv250gy5qYx51v1dy9ZfJ5NYq9x91vK51fJ7C-p968deZoI8h46bVBXc54tq9fJt59x-9dNqO-F-48LcPv28jcdtl8mN67jcR5c8J-5uTcl6V7J5V7fY+-F+-YN419lort28vep8W8NG68lf24rbp4t9x9rYJr075-G6bcR7lbt7m51ad+W995N7qsHes8d8D51rHdF4D8t45uneB9D+j7lrO7tbd7W+NGu+T9x43bV5Yf293ee4z7D8W6PZ55Ycz4vei5T8Zpvcj4L4T8fcp5z90TAXaCAA).\n\nLicense MIT\n\n## Usage\n\nThe following demonstrates basic usage.\n\n```typescript\nimport { Byte, Num, Add, Sub, Mod } from './ts-8-bit'\n\n// ------------------------------------------------------------------------\n//\n// Use Byte\u003cT\u003e and Num\u003cT\u003e to map between bytes and numbers\n//\n// ------------------------------------------------------------------------\n\ntype A = Byte\u003c127\u003e                           // type A = [1, 1, 1, 1, 1, 1, 1, 0]\n\ntype B = Num\u003c[1, 1, 1, 1, 1, 1, 1, 0]\u003e       // type B = 127\n\ntype C = Num\u003c Byte\u003c55\u003e \u003e                     // type C = 55\n\n// ------------------------------------------------------------------------\n//\n// ... with math done exclusively on bytes ...\n//\n// ------------------------------------------------------------------------\n\ntype D = Add\u003c                                // type D = [0, 1, 1, 1, 1, 1, 1, 1]\n    [1, 1, 1, 1, 1, 1, 1, 0], \n    [1, 1, 1, 1, 1, 1, 1, 0]\n\u003e\n\n// ------------------------------------------------------------------------\n//\n// ... but can be remapped this way ...\n//\n// ------------------------------------------------------------------------\n\ntype E = Num\u003c Add\u003c Byte\u003c127\u003e, Byte\u003c127\u003e \u003e \u003e  // type E = 254\n\n// ------------------------------------------------------------------------\n//\n// ... and used for stuff like ...\n//\n// ------------------------------------------------------------------------\n\ntype FizzBuzz\u003cT extends Byte\u003cany\u003e\u003e = \n     Mod\u003cT, Byte\u003c5\u003e\u003e extends Byte\u003c0\u003e ? \n     Mod\u003cT, Byte\u003c3\u003e\u003e extends Byte\u003c0\u003e ? 'fizzbuzz' : 'buzz' :\n     Mod\u003cT, Byte\u003c3\u003e\u003e extends Byte\u003c0\u003e ? 'fizz'     : \"\"\n\ntype T1  = FizzBuzz\u003c Byte\u003c1\u003e \u003e     // \"\"\ntype T2  = FizzBuzz\u003c Byte\u003c2\u003e \u003e     // \"\"\ntype T3  = FizzBuzz\u003c Byte\u003c3\u003e \u003e     // \"fizz\"\ntype T4  = FizzBuzz\u003c Byte\u003c4\u003e \u003e     // \"\"\ntype T5  = FizzBuzz\u003c Byte\u003c5\u003e \u003e     // \"buzz\"\ntype T6  = FizzBuzz\u003c Byte\u003c6\u003e \u003e     // \"fizz\"\n// ... etc ...\ntype T15 = FizzBuzz\u003c Byte\u003c15\u003e \u003e    // \"fizzbuzz\"\n\n// ------------------------------------------------------------------------\n//\n// ... or something more elaborate ...\n//\n// ------------------------------------------------------------------------\n\ntype IsPrimeOp\u003c\n    A extends [Bit, Bit, Bit, Bit, Bit, Bit, Bit, Bit],\n    B extends [Bit, Bit, Bit, Bit, Bit, Bit, Bit, Bit]\n\u003e = Num\u003cB\u003e         extends 1 ? true  : \n    Num\u003cMod\u003cA, B\u003e\u003e extends 0 ? false : \n    IsPrimeOp\u003cA, Sub\u003cB, Byte\u003c1\u003e\u003e\u003e\n\ntype IsPrime\u003c\n    A extends [Bit, Bit, Bit, Bit, Bit, Bit, Bit, Bit]\n\u003e = IsPrimeOp\u003cA, Sub\u003cA, Byte\u003c1\u003e\u003e\u003e\n\ntype P3  = IsPrime\u003c Byte\u003c3\u003e \u003e      // true\ntype P4  = IsPrime\u003c Byte\u003c4\u003e \u003e      // false\ntype P5  = IsPrime\u003c Byte\u003c5\u003e \u003e      // true\ntype P6  = IsPrime\u003c Byte\u003c6\u003e \u003e      // false\ntype P7  = IsPrime\u003c Byte\u003c7\u003e \u003e      // true\ntype P8  = IsPrime\u003c Byte\u003c8\u003e \u003e      // false\ntype P9  = IsPrime\u003c Byte\u003c9\u003e \u003e      // false\ntype P10 = IsPrime\u003c Byte\u003c10\u003e \u003e     // false\ntype P11 = IsPrime\u003c Byte\u003c11\u003e \u003e     // true\ntype P12 = IsPrime\u003c Byte\u003c12\u003e \u003e     // false\ntype P13 = IsPrime\u003c Byte\u003c13\u003e \u003e     // true\ntype P14 = IsPrime\u003c Byte\u003c14\u003e \u003e     // false\ntype P15 = IsPrime\u003c Byte\u003c15\u003e \u003e     // false\ntype P16 = IsPrime\u003c Byte\u003c16\u003e \u003e     // false\ntype P17 = IsPrime\u003c Byte\u003c17\u003e \u003e     // true - pushing recursion limits here\ntype P18 = IsPrime\u003c Byte\u003c18\u003e \u003e     // false\n\n```\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsinclairzx81%2Fts-8-bit","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsinclairzx81%2Fts-8-bit","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsinclairzx81%2Fts-8-bit/lists"}