{"id":30646267,"url":"https://github.com/s-expressionists/trinsic","last_synced_at":"2026-02-11T03:32:30.335Z","repository":{"id":310825089,"uuid":"1041362760","full_name":"s-expressionists/Trinsic","owner":"s-expressionists","description":"Common Lisp utility system to aid in extrinsic and intrinsic system construction.","archived":false,"fork":false,"pushed_at":"2026-01-23T23:31:45.000Z","size":10,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-24T11:35:06.694Z","etag":null,"topics":["common-lisp"],"latest_commit_sha":null,"homepage":"","language":"Common Lisp","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/s-expressionists.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-20T11:29:21.000Z","updated_at":"2026-01-23T23:31:49.000Z","dependencies_parsed_at":"2025-08-28T02:16:20.441Z","dependency_job_id":"741b0fa8-546e-44f9-9806-ec3dd66f0c87","html_url":"https://github.com/s-expressionists/Trinsic","commit_stats":null,"previous_names":["s-expressionists/trinsic"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/s-expressionists/Trinsic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s-expressionists%2FTrinsic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s-expressionists%2FTrinsic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s-expressionists%2FTrinsic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s-expressionists%2FTrinsic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/s-expressionists","download_url":"https://codeload.github.com/s-expressionists/Trinsic/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/s-expressionists%2FTrinsic/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29326175,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T02:08:56.257Z","status":"ssl_error","status_checked_at":"2026-02-11T02:08:51.338Z","response_time":97,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["common-lisp"],"created_at":"2025-08-31T04:37:27.497Z","updated_at":"2026-02-11T03:32:30.330Z","avatar_url":"https://github.com/s-expressionists.png","language":"Common Lisp","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Trinsic\n\nTrinisic is a collection of useful functions that aid in\nextrinsic/intrinsic system construction.\n\n## client-form\n\n```common-lisp\n(defgeneric client-form (client))\n```\n\nCLIENT-FORM returns a form that will return the current client when\nevaluated in the future. It is used during during macro-expansion so\nthat the expanded code refers to correct client at execution time.\n\n## features-list\n\n```common-lisp\n(defgeneric features-list (client)\n```\n\nReturn a list of feature keywords to be merged with \\*FEATURES\\* for\nintrinsic clients. This generic function has NCONC method combination.\n\n## cell-value\n\n```common-lisp\n(defgeneric cell-value (client name type))\n```\n\nReturns the current value of a cell in the client. For example\n`(cell-value client 'cl:\\*standard-output\\* 'cl:variable)` could be\nused to retrieve the value of \\*STANDARD-OUTPUT\\*.\n\n## setf cell-value\n\n```common-lisp\n(defgeneric (setf cell-value) (new-value client name type))\n```\n\nSet the value of the cell.\n\n## valid-cell-value-p\n\n```common-lisp\n(defgeneric valid-cell-value-p (client name type value))\n```\n\nChecks for valid values of a cell.\n\n## initial-cell-value\n\n```common-lisp\n(defgeneric initial-cell-value (client name type))\n```\n\nReturns the proper initial value for a cell.\n\n## call-with-cell-value\n\n```common-lisp\n(defgeneric call-with-cell-value (client name type value thunk))\n```\n\nInvokes THUNK with a cell value. For example:\n\n```common-lisp\n(defmethod call-with-cell-value\n    (client (name (eql 'cl:*standard-output*)) (type (eql 'cl:variable))\n     value thunk)\n  (let ((cl:*standard-output* value))\n    (funcall thunk)))\n```\n\n## make-define-interface\n\n```common-lisp\n(defmacro make-define-interface\n    ((\u0026key client-form client-class intrinsic)\n     declarations \u0026body body))\n```\n\nMAKE-DEFINE-INTERFACE creates a macro in the current package called\nDEFINE-INTERFACE that used to create an interface in an intrinsic or\nextrinsic system. The macro DEFINE-INTERFACE will define an\nappropriate CLIENT-FORM method.\n\nDECLARATIONS are a list of variable declarations each with the form\n`(var symbol \u0026key variable)`. A LET binding is established around BODY\nwith these declarations. The value of VAR in this binding is as\nfollows:\n\n1. For intrinsic systems the initial value of VAR will be SYMBOL if\n   SYMBOL is interned. If SYMBOL is uninterned the VAR will be set to\n   an interned symbol in \\*PACKAGE\\* with same SYMBOL-NAME as SYMBOL.\n2. For extrinsic systems the initial value of VAR will be an an\n   interned symbol in \\*PACKAGE\\* with same SYMBOL-NAME as SYMBOL.\n3. If the keyword argument :VARIABLE is supplied and is non-NIL then\n   methods for CELL-VALUE, (SETF CELL-VALUE), and CALL-WITH-CELL-VALUE\n   will be defined for a TYPE of CL:VARIABLE.\n\nFor intrinsic systems the DEFINE-INTERFACE macro created by\nMAKE-DEFINE-INTERFACE will also merge the features keywords from\nFEATURE-LIST into CL:\\*FEATURES\\* and disable package locks for the\nBODY via TRIVIAL-PACKAGE-LOCKS:WITH-UNLOCKED-SYSTEM-PACKAGES.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fs-expressionists%2Ftrinsic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fs-expressionists%2Ftrinsic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fs-expressionists%2Ftrinsic/lists"}