{"id":20179519,"url":"https://github.com/csdummi/htm","last_synced_at":"2025-10-15T22:42:22.973Z","repository":{"id":114100573,"uuid":"160694539","full_name":"CSDUMMI/HTM","owner":"CSDUMMI","description":"This is the implementation of the HTM System/Theory in reference to the research of Numenta","archived":false,"fork":false,"pushed_at":"2018-12-13T17:10:39.000Z","size":770,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-01-13T16:50:46.634Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/CSDUMMI.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":"2018-12-06T15:31:21.000Z","updated_at":"2019-01-14T13:47:45.000Z","dependencies_parsed_at":"2023-06-13T02:30:17.646Z","dependency_job_id":null,"html_url":"https://github.com/CSDUMMI/HTM","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/CSDUMMI%2FHTM","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CSDUMMI%2FHTM/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CSDUMMI%2FHTM/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/CSDUMMI%2FHTM/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/CSDUMMI","download_url":"https://codeload.github.com/CSDUMMI/HTM/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241616681,"owners_count":19991542,"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-11-14T02:27:02.276Z","updated_at":"2025-10-15T22:42:17.937Z","avatar_url":"https://github.com/CSDUMMI.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Design Documentation of the HTM Theory implementation in Haskell as a Modular Libary\nThe basic goals of this Project is to allow the implementation of modern Machiene Intelligence Systems with the HTM Theory as proposed by Numenta.\nThis Project will have three major parts that all build upon the other to enable a Libary with wich you could implement your own HTM System and modify exsisting ones.\n### 1. The API for a Structures called Collumns and Layers\nIt might be a little confusing to use the Words Collumn and Layer in another way in the context of HTM Theory. \nBut this naming is inspired by the Description that Matt Taylor gave in one of his videos\nto explain the Cortical Circuitry. \nIn the context of programming a Collumn is just a number of Algorithms ( Layers ) \nthat are each execute in order and given as input the output of the previous.                        \nFor both the Collumn and the Layer there will be Typeclass that let you define them yourself. \nIf you don‘t want to do that, you can use one of the Collumns and Layers \nthat is  defined as a part of this Typeclass.\nThe Typeclass for a Collumn is very simple:\n```haskell\nclass Collumn a where\n    run :: SDR.SDR -\u003e a -\u003e a\n    output :: Collumn -\u003e SDR.SDR\n```\n(Collumn/Collumn.hs)\nThe Semantic is simple as well, the `run` function executes the \nCollumn with an `SDR` given as its input.\nAfter that the `output` can be used on the resulting Collumn to\nget the output of the Collumn, what is the same as asking\nfor the last SDR the last Layer of the Collumn had as an output.\n\nA Layer is also a simple structure because it only\nneeds one function that takes an SDR, a Collumn and then\ntransforms that into another SDR.\n```haskell\nclass Layer a where\n    run :: SDR.SDR -\u003e Collumn.Collumn -\u003e Collumn.Collumn\n```\n(Layer/Layer.hs)\nAttention: You should only import these Modules as qualified\nbecause I will probably use some very generic names such as\n`run`.\n\n### The `MCollumn` and `IdentityLayer`\nI already defined an Instance of the `Collumn` Class. \nIt can be used whenever you need a minimal `Collumn`.\n\n`MCollumn` is simply defined as having\na List of pairs of the Layer and \nthe output of the Layer.\nTo use it and show that it works there\nis another Instance of the `Layer` Class\nthat simply returns whatever was given to it.\nYou can just define it yourself:\n```haskell\ndata IdentityLayer = IdentityLayer\n\ninstance Layer.Layer IdentityLayer where\n    run sdr ly cl = sdr\n```\n(test/IdentityLayer.hs)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcsdummi%2Fhtm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcsdummi%2Fhtm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcsdummi%2Fhtm/lists"}