{"id":13424498,"url":"https://github.com/taocpp/sequences","last_synced_at":"2025-05-13T16:19:28.816Z","repository":{"id":55679117,"uuid":"44015602","full_name":"taocpp/sequences","owner":"taocpp","description":"Variadic templates and std::integer_sequence support library","archived":false,"fork":false,"pushed_at":"2025-02-21T14:56:45.000Z","size":271,"stargazers_count":110,"open_issues_count":1,"forks_count":17,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-02-21T15:46:56.167Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/taocpp.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":"2015-10-10T15:16:23.000Z","updated_at":"2025-02-21T14:56:49.000Z","dependencies_parsed_at":"2025-01-11T19:23:22.870Z","dependency_job_id":"a3efc813-41c5-4b9e-bc03-1a867bfee375","html_url":"https://github.com/taocpp/sequences","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taocpp%2Fsequences","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taocpp%2Fsequences/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taocpp%2Fsequences/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/taocpp%2Fsequences/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/taocpp","download_url":"https://codeload.github.com/taocpp/sequences/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243775864,"owners_count":20346279,"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":[],"created_at":"2024-07-31T00:00:55.219Z","updated_at":"2025-05-13T16:19:28.791Z","avatar_url":"https://github.com/taocpp.png","language":"C++","readme":"# The Art of C++ / Sequences\n\n[![Release](https://img.shields.io/github/release/taocpp/sequences.svg)](https://github.com/taocpp/sequences/releases/latest)\n[![Windows CI](https://github.com/taocpp/sequences/workflows/Windows/badge.svg)](https://github.com/taocpp/sequences/actions?query=workflow%3AWindows)\n[![macOS CI](https://github.com/taocpp/sequences/workflows/macOS/badge.svg)](https://github.com/taocpp/sequences/actions?query=workflow%3AmacOS)\n[![Linux CI](https://github.com/taocpp/sequences/workflows/Linux/badge.svg)](https://github.com/taocpp/sequences/actions?query=workflow%3ALinux)\n\n[The Art of C++](https://taocpp.github.io/) / Sequences is a zero-dependency C++11 header-only library that provides efficient algorithms to generate and work on variadic templates and [`std::integer_sequence`](http://en.cppreference.com/w/cpp/utility/integer_sequence).\n\n## Compatibility\n\n* Requires C++11 or newer.\n* Tested with GCC 4.8+, Clang 3.4+, Xcode 6+ and Visual Studio 2017+.\n\n## Provided algorithms and examples\n\n* All provided templates are in the nested namespace `tao::sequence`.\n* All templates don't use C++14 features, therefore being compatible with C++11. Sometimes, C++14/C++17 features are used conditionally, taking advantage of newer language features when available but providing C++11-compatible implementations otherwise.\n* All templates use `tao::sequence::integer_sequence`, etc. internally, therefore being compatible with C++11.\n* All templates use `tao::sequence::make_integer_sequence`, etc. internally, therefore using the most scalable solution available.\n\n#### Header `tao/seq/integer_sequence.hpp`\n\nProvides:\n\n* `integer_sequence\u003c typename T, T N \u003e`\n* `index_sequence\u003c std::size_t N \u003e`\n\nNotes:\n\n* When available (C++14 or newer), the above are type-aliases for `std::integer_sequence` and `std::index_sequence`.\n\n#### Header `tao/seq/make_integer_sequence.hpp`\n\nEfficient versions of sequence generators.\n\n* `make_integer_sequence\u003c typename T, T N \u003e`\n* `make_index_sequence\u003c std::size_t N \u003e`\n* `index_sequence_for\u003c typename... Ts \u003e`\n\nExamples:\n\n* `make_integer_sequence\u003cint,0\u003e` ➙ `integer_sequence\u003cint\u003e`\n* `make_integer_sequence\u003cint,1\u003e` ➙ `integer_sequence\u003cint,0\u003e`\n* `make_integer_sequence\u003cint,3\u003e` ➙ `integer_sequence\u003cint,0,1,2\u003e`\n* `make_index_sequence\u003c0\u003e` ➙ `index_sequence\u003c\u003e`\n* `make_index_sequence\u003c1\u003e` ➙ `index_sequence\u003c0\u003e`\n* `make_index_sequence\u003c5\u003e` ➙ `index_sequence\u003c0,1,2,3,4\u003e`\n* `index_sequence_for\u003cint,void,long\u003e` ➙ `index_sequence\u003c0,1,2\u003e`\n\nNotes:\n\nlibc++ already has very efficient versions for the above, so they are pulled in with a using-declaration.\nOnly if we don't know if the STL's versions are at least O(log N) we provide our own implementations.\n\nOur own implementation has O(log N) instantiation depth.\nThis allows for very large sequences without the need to increase the compiler's default instantiation depth limits.\nFor example, GCC and Clang generate `index_sequence\u003c10000\u003e` in ~0.15s (on my machine, of course).\nThe standard library version from libstdc++ prior to version 8, when trying to create `index_sequence\u003c5000\u003e` and with its O(N) implementation, requires ~30s, \u003e3GB of RAM and `-ftemplate-depth=5100`.\nModern versions of libc++ and libstdc++ use compiler intrinsics and are used when available.\n\n#### Header `tao/seq/make_integer_range.hpp`\n\nGenerate half-open ranges of integers.\n\n* `make_integer_range\u003c typename T, T N, T M \u003e`\n* `make_index_range\u003c std::size_t N, std::size_t M \u003e`\n\nExamples:\n\n* `make_integer_range\u003cint,3,7\u003e` ➙ `integer_sequence\u003cint,3,4,5,6\u003e`\n* `make_integer_range\u003cint,7,3\u003e` ➙ `integer_sequence\u003cint,7,6,5,4\u003e`\n* `make_integer_sequence\u003cint,-2,2\u003e` ➙ `integer_sequence\u003cint,-2,-1,0,1\u003e`\n* `make_index_range\u003c5,5\u003e` ➙ `index_sequence\u003c\u003e`\n* `make_index_range\u003c2,5\u003e` ➙ `index_sequence\u003c2,3,4\u003e`\n\n#### Header `tao/seq/sum.hpp`\n\nIntegral constant to provide the sum of `Ns`.\nIf no `Ns` are given, the result is `T(0)`.\n\n* `sum\u003c typename T, T... Ns \u003e`\n* `sum\u003c typename S \u003e`\n\nExamples:\n\n* `sum\u003cint,1,4,3,1\u003e::value` ➙ `9`\n* `sum\u003cmake_index_sequence\u003c5\u003e\u003e::value` ➙ `10`\n\n#### Header `tao/seq/prod.hpp`\n\nIntegral constant to provide the product of `Ns`.\nIf no `Ns` are given, the result is `T(1)`.\n\n* `prod\u003c typename T, T... Ns \u003e`\n* `prod\u003c typename S \u003e`\n\nExamples:\n\n* `prod\u003cint\u003e::value` ➙ `1`\n* `prod\u003cint,1,4,3,-1\u003e::value` ➙ `-12`\n\n#### Header `tao/seq/partial_sum.hpp`\n\nIntegral constant to provide the sum of the first `I` elements.\n\n* `partial_sum\u003c std::size_t I, typename T, T... Ns \u003e`\n* `partial_sum\u003c std::size_t I, typename S \u003e`\n\nExamples:\n\n* `partial_sum\u003c0,int,1,4,3,1\u003e::value` ➙ `0`\n* `partial_sum\u003c2,int,1,4,3,1\u003e::value` ➙ `5`\n* `partial_sum\u003c4,make_index_sequence\u003c5\u003e\u003e::value` ➙ `6`\n\n#### Header `tao/seq/partial_prod.hpp`\n\nIntegral constant to provide the product of the first `I` elements of `Ns`.\n\n* `partial_prod\u003c std::size_t I, typename T, T... Ns \u003e`\n* `partial_prod\u003c std::size_t I, typename S \u003e`\n\nExamples:\n\n* `partial_prod\u003c0,int,2,5,3,2\u003e::value` ➙ `1`\n* `partial_prod\u003c1,int,2,5,3,2\u003e::value` ➙ `2`\n* `partial_prod\u003c2,int,2,5,3,2\u003e::value` ➙ `10`\n* `partial_prod\u003c4,int,2,5,3,2\u003e::value` ➙ `60`\n\n#### Header `tao/seq/exclusive_scan.hpp`\n\nProvides a sequence with the exclusive scan of the input sequence.\n\n* `exclusive_scan_t\u003c typename OP, typename T, T Init, T... Ns \u003e`\n* `exclusive_scan_t\u003c typename OP, typename S, T Init \u003e`\n\nExamples:\n\n* `exclusive_scan_t\u003cop::plus,int,0,1,4,0,3,1\u003e` ➙ `integer_sequence\u003cint,0,1,5,5,8\u003e`\n* `using S = index_sequence\u003c3,1,4,1,5,9,2,6\u003e;\n* `exclusive_scan_t\u003cop::multiplies,S,1\u003e` ➙ `index_sequence\u003c3,3,12,12,60,540,1080,6480\u003e`\n\n#### Header `tao/seq/inclusive_scan.hpp`\n\nProvides a sequence with the inclusive scan of the input sequence.\n\n* `inclusive_scan_t\u003c typename OP, typename T, T... Ns \u003e`\n* `inclusive_scan_t\u003c typename OP, typename S \u003e`\n\nExamples:\n\n* `inclusive_scan_t\u003cop::plus,int,1,4,0,3,1\u003e` ➙ `integer_sequence\u003cint,1,5,5,8,9\u003e`\n\n#### Header `tao/seq/zip.hpp`\n\nApplies a binary operation to elements from two sequences.\n\n* `zip_t\u003c typename OP, typename L, typename R \u003e`\n\nNotes:\n\nBoth sequences may have a different element type, the resulting sequence's type is calculated with `std::common_type_t`.\n\n#### Header `tao/seq/plus.hpp`\n\nProvides a sequence which is the element-wise sum of its input sequences.\n\n* `plus_t\u003c typename L, typename R \u003e`\n\nNotes:\n\nBoth sequences may have a different element type, the resulting sequence's type is calculated with `std::common_type_t`.\n\nExamples:\n\n* `using A = index_sequence\u003c1,4,0,3,1\u003e`\n* `using B = make_index_sequence\u003c5\u003e`\n* `plus_t\u003cA,B\u003e` ➙ `index_sequence\u003c1,5,2,6,5\u003e`\n\n#### Header `tao/seq/minus.hpp`\n\nProvides a sequence which is the element-wise sum of its input sequences.\n\n* `minus_t\u003c typename L, typename R \u003e`\n\nNotes:\n\nBoth sequences may have a different element type, the resulting sequence's type is calculated with `std::common_type_t`.\n\nExamples:\n\n* `using A = integer_sequence\u003cint,1,4,0,3,1\u003e`\n* `using B = integer_sequence\u003cint,0,1,2,3,4\u003e`\n* `minus_t\u003cA,B\u003e` ➙ `integer_sequence\u003cint,1,3,-2,0,-3\u003e`\n* `minus_t\u003cB,A\u003e` ➙ `integer_sequence\u003cint,-1,-3,2,0,3\u003e`\n\n#### Header `tao/seq/multiply.hpp`\n\nProvides a sequence which is the element-wise product of its input sequences.\n\n* `multiply_t\u003c typename L, typename R \u003e`\n\nNotes:\n\nBoth sequences may have a different element type, the resulting sequence's type is calculated with `std::common_type_t`.\n\nExamples:\n\n* `using A = index_sequence\u003c1,5,2,3,1\u003e`\n* `using B = index_sequence\u003c3,0,2,4,1\u003e`\n* `multiply_t\u003cA,B\u003e` ➙ `index_sequence\u003c3,0,4,12,1\u003e`\n\n#### Header `tao/seq/head.hpp`\n\nIntegral constant to provide the first element of a non-empty sequence.\n\n* `head\u003c typename T, T... \u003e`\n* `head\u003c typename S \u003e`\n\n#### Header `tao/seq/last.hpp`\n\nIntegral constant to provide the last element of a non-empty sequence.\n\n* `last\u003c typename T, T... \u003e`\n* `last\u003c typename S \u003e`\n\n#### Header `tao/seq/tail.hpp`\n\nRemoved the first element of a non-empty sequence.\n\n* `tail_t\u003c typename T, T... \u003e`\n* `tail_t\u003c typename S \u003e`\n\n#### Header `tao/seq/select.hpp`\n\nIntegral constant to provide the `I`-th element of a non-empty sequence.\n\n* `select\u003c std::size_t I, typename T, T... \u003e`\n* `select\u003c std::size_t I, typename S \u003e`\n\n#### Header `tao/seq/first.hpp`\n\nSequence that contains only the first `I` elements of a given sequence.\n\n* `first_t\u003c std::size_t I, typename T, T... \u003e`\n* `first_t\u003c std::size_t I, typename S \u003e`\n\n#### Header `tao/seq/concatenate.hpp`\n\nConcatenate the values of all sequences.\n\n* `concatenate_t\u003c typename... Ts \u003e`\n\nNotes:\n\nThe sequences may have different element types, the resulting sequence's type is calculated with `std::common_type_t`.\n\n#### Header `tao/seq/difference.hpp`\n\nBuilds the difference of two sequences, i.e. a sequence that contains all elements of `T` that are not in `U`.\n\n* `difference_t\u003c typename T, typename U \u003e`\n\nExamples:\n\n* `using A = index_sequence\u003c1,5,2,3,1,7\u003e`\n* `using B = index_sequence\u003c2,1\u003e`\n* `difference_t\u003cA,B\u003e` ➙ `index_sequence\u003c5,3,7\u003e`\n\nNotes:\n\nBoth sequences may have a different element type, the resulting sequence's type is calculated with `std::common_type_t`.\n\n#### Header `tao/seq/accumulate.hpp`\n\nResult of a left fold of the given values over `OP`.\n\n* `accumulate\u003c typename OP, typename T, T... \u003e`\n* `accumulate\u003c typename OP, typename S \u003e`\n\n#### Header `tao/seq/reduce.hpp`\n\nReduces the given values in an unspecified order over `OP`.\n\n* `reduce\u003c typename OP, typename T, T... \u003e`\n* `reduce\u003c typename OP, typename S \u003e`\n\n#### Header `tao/seq/min.hpp`\n\nIntegral constant to provide the minimum value.\n\n* `min\u003c typename T, T... \u003e`\n* `min\u003c typename S \u003e`\n\n#### Header `tao/seq/max.hpp`\n\nIntegral constant to provide the maximum value.\n\n* `max\u003c typename T, T... \u003e`\n* `max\u003c typename S \u003e`\n\n#### Header `tao/seq/map.hpp`\n\nMap a sequence of indices to a sequence of values.\n\n* `map_t\u003c typename I, typename M \u003e`\n\nExamples:\n\n* `using I = index_sequence\u003c1,0,3,2,1,1,3\u003e`\n* `using M = integer_sequence\u003cint,5,6,-7,8,9\u003e`\n* `map_t\u003cI,M\u003e` ➙ `integer_sequence\u003cint,6,5,8,-7,6,6,8\u003e`\n\n#### Header `tao/seq/is_all.hpp`\n\nIntegral constant which is true if all boolean parameters are true (logical and).\n\n* `is_all\u003c bool... \u003e`\n\nExamples:\n\n* `is_all\u003ctrue,true,true,true\u003e::value` ➙ `true`\n* `is_all\u003ctrue,true,false,true\u003e::value` ➙ `false`\n* `is_all\u003c\u003e::value` ➙ `true`\n\n#### Header `tao/seq/is_any.hpp`\n\nIntegral constant which is true if any boolean parameter is true (logical or).\n\n* `is_any\u003c bool... \u003e`\n\nExamples:\n\n* `is_any\u003cfalse,true,false,false\u003e::value` ➙ `true`\n* `is_any\u003cfalse,false,false,false\u003e::value` ➙ `false`\n* `is_any\u003c\u003e::value` ➙ `false`\n\n#### Header `tao/seq/contains.hpp`\n\nIntegral constant which is true if an element `N` is part of a list of elements `Ns...`.\n\n* `contains\u003c typename T, T N, T... Ns\u003e`\n* `contains\u003c typename S, T N\u003e`\n\nExamples:\n\n* `contains\u003cint,0\u003e` ➙ `false`\n* `contains\u003cint,0,0\u003e` ➙ `true`\n* `contains\u003cint,0,1\u003e` ➙ `false`\n* `contains\u003cint,0,1,2,3,4,5\u003e` ➙ `false`\n* `contains\u003cint,3,1,2,3,4,5\u003e` ➙ `true`\n* `using A = integer_sequence\u003cint,1,2,3,4,5\u003e`\n* `contains\u003cA,0\u003e` ➙ `false`\n* `contains\u003cA,3\u003e` ➙ `true`\n\n#### Header `tao/seq/index_of.hpp`\n\nIntegral constant which is the smallest index of an element `N` in a list of elements `Ns...`.\n\n* `index_of\u003c typename T, T N, T... Ns\u003e`\n* `index_of\u003c typename S, T N\u003e`\n\nNote: `Ns...` must contain `N`, otherwise a `static_assert` is triggered.\n\nExamples:\n\n* `index_of\u003cint,0,0\u003e` ➙ `0`\n* `index_of\u003cint,3,1,2,3,4,5\u003e` ➙ `2`\n* `using A = integer_sequence\u003cint,1,2,3,4,5\u003e`\n* `index_of\u003cA,3\u003e` ➙ `2`\n\n#### Header `tao/seq/scale.hpp`\n\nScales a sequence by a factor `F`.\n\n* `scale\u003c typename T, T F, T... Ns\u003e`\n* `scale\u003c typename S, T F\u003e`\n\nExamples:\n\n* `scale\u003cint,0,0\u003e` ➙ `integer_sequence\u003cint,0\u003e`\n* `scale\u003cint,2,-1,2,0,1,5\u003e` ➙ `integer_sequence\u003cint,-2,4,0,2,10\u003e`\n* `using A = integer_sequence\u003cint,-1,2,4\u003e`\n* `scale\u003cA,3\u003e` ➙ `integer_sequence\u003cint,-3,6,12\u003e`\n\n#### Header `tao/seq/at_index.hpp`\n\nReturns the `I`-th type from a list of types `Ts...`.\n\n* `at_index_t\u003c std::size_t I, typename... Ts \u003e`\n\nExamples:\n\n* `at_index\u003c0,bool,int,void,char*\u003e` ➙ `bool`\n* `at_index\u003c2,bool,int,void,char*\u003e` ➙ `void`\n\n#### Header `tao/seq/reverse.hpp`\n\nReverses a sequence.\n\nExamples:\n\n* `reverse_t\u003cint,1,4,0,3,2\u003e` ➙ `integer_sequence\u003cint,2,3,0,4,1\u003e`\n* `reverse_t\u003cindex_sequence\u003c1,4,0,3,2\u003e\u003e` ➙ `index_sequence\u003cint,2,3,0,4,1\u003e`\n\n#### Header `tao/seq/sort.hpp`\n\nSort a sequence according to a given predicate.\n\n* `sort_t\u003c typename OP, typename T, T... Ns \u003e`\n* `sort_t\u003c typename OP, typename S \u003e`\n\nExamples:\n\nGiven a predicate `less`...\n\n    struct less\n    {\n       template\u003c typename T, T A, T B \u003e\n       using apply = std::integral_constant\u003c bool, ( A \u003c B ) \u003e;\n    };\n\n* `sort_t\u003cless,int,7,-2,3,0,4\u003e` ➙ `integer_sequence\u003cint,-2,0,3,4,7\u003e`\n* `using S = index_sequence\u003c39,10,2,4,10,2\u003e`\n* `sort_t\u003cless,S\u003e` ➙ `index_sequence\u003c2,2,4,10,10,39\u003e`\n\n## Package Managers\n\nYou can download and install [The Art of C++](https://taocpp.github.io/) / Sequences using the [Conan](https://github.com/conan-io/conan) package manager:\n\n    conan install taocpp-sequences/2.0.1@\n\nThe taocpp-sequences package in conan is kept up to date by Conan team members and community contributors.\nIf the version is out-of-date, please [create an issue or pull request](https://github.com/conan-io/conan-center-index) on the Conan Center Index repository.\n\n## Changelog\n\n### 3.0.0\n\nReleased 2024-12-28\n\n* Renamed namespace from `tao::seq` to `tao::sequence`.\n* Added `last`.\n\n### 2.0.1\n\nReleased 2019-11-09\n\n* Fixed Conan upload.\n\n### 2.0.0\n\nReleased 2019-11-07\n\n* Generalized `exclusive_scan` and `inclusive_scan`.\n* Split `fold` into `accumulate` and `reduce`.\n* Added `first`, `reverse`, `prod`, `partial_prod`, `multiplies`, `difference`, and `sort`.\n* Improved compile-times for `at_index`.\n* Added `make_index_of_sequence`, `permutate`, and `sort_index` to contrib (unofficial).\n\n### 1.0.2\n\nReleased 2018-07-22\n\n* Added documentation for the remaining headers.\n\n### 1.0.1\n\nReleased 2018-07-21\n\n* Removed `type_by_index`, use `at_index` instead.\n\n### 1.0.0\n\nReleased 2018-06-29\n\n* Initial release.\n\n## License\n\nThe Art of C++ is certified [Open Source](http://www.opensource.org/docs/definition.html) software. It may be used for any purpose, including commercial purposes, at absolutely no cost. It is distributed under the terms of the [MIT license](http://www.opensource.org/licenses/mit-license.html) reproduced here.\n\n\u003e Copyright (c) 2015-2024 Daniel Frey\n\u003e\n\u003e Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\u003e\n\u003e The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\u003e\n\u003e THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n","funding_links":[],"categories":["C++","Containers and Algorithms"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaocpp%2Fsequences","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftaocpp%2Fsequences","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftaocpp%2Fsequences/lists"}