{"id":13779816,"url":"https://github.com/luvisi/continuinglogo","last_synced_at":"2026-01-10T10:06:00.638Z","repository":{"id":21477041,"uuid":"24795675","full_name":"luvisi/continuinglogo","owner":"luvisi","description":"A Logo interpreter with dynamic scope, shallow binding, tail call optimization, Lisp 1.5 style FUNARG's, and first class continuations.  Mostly Ucblogo compatible.","archived":false,"fork":false,"pushed_at":"2018-08-13T21:22:30.000Z","size":997,"stargazers_count":18,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-08-03T18:14:24.342Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","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/luvisi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING.ContinuingLogo.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-10-04T17:11:40.000Z","updated_at":"2024-01-25T10:22:14.000Z","dependencies_parsed_at":"2022-08-21T14:40:38.579Z","dependency_job_id":null,"html_url":"https://github.com/luvisi/continuinglogo","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luvisi%2Fcontinuinglogo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luvisi%2Fcontinuinglogo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luvisi%2Fcontinuinglogo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/luvisi%2Fcontinuinglogo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/luvisi","download_url":"https://codeload.github.com/luvisi/continuinglogo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225056740,"owners_count":17414197,"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-08-03T18:01:09.554Z","updated_at":"2024-11-17T15:30:43.381Z","avatar_url":"https://github.com/luvisi.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"\n\nContinuingLogo\n\nContinuingLogo is a Logo interpreter that is mostly compatible with\nUcblogo.  It successfully runs minimally modified versions of \nBrian Harvey's Pascal compiler and Student program from volume 3 of\nComputer Science Logo Style.\n\nIt also supports FUNARG's, which are kind of like lexical closures,\nbut they are closed over the dynamic environment instead of the\nlexical environment.  These were in Lisp 1.5, but they have not\nbeen implemented in many recent languages.\n\nFor example:\n\n    ? to addx :y\n    \u003e   output :x+:y\n    \u003e end\n    ? to makeclosure\n    \u003e   output function [[z] addx :z]\n    \u003e end\n    ? to makeadder :x\n    \u003e   output makeclosure\n    \u003e end\n    ? make \"add5 makeadder 5\n    ? print invoke :add5 2\n    7\n    ?\n\nWhen makeclosure calls function, it captures the dynamic environment,\nincluding the value of x from makeadder.\n\nFirst class continuations are supported, as is McCarthy's ambiguous\noperator.  For example:\n\n    ? to foo\n    \u003e   localmake \"x (amb 1 2 3)\n    \u003e   localmake \"y (amb 4 5 6)\n    \u003e   if :x*:y \u003c\u003e 15 [fail]\n    \u003e   print :x\n    \u003e   print :y\n    \u003e end\n    ? foo\n    3\n    5\n    ?\n\nThe garbage collector is precise, tracing, incremental, and portable.\nIt knows nothing about the structure of Logo objects.  Callbacks\nare used for following the pointers within objects.\n\nINSTALLATION\n\nContinuingLogo uses autoconf.  With any luck, the following may work:\n\n    $ ./configure; make; make install\n\nRUNNING\n\nNormal usage:\n\n    $ clogo\n\nEXAMPLES\n\nTo run the pascal compiler:\n\n    $ cd ucblogo/\n    $ rlwrap clogo\n    ? load \"pascal\n    Loaded\n    ? compile \"tower\n    \u003cprintout of pascal program as it is compiled\u003e\n    ? prun \"tower\n    \u003cmoves to solve the Tower of Hanoi\u003e\n\nTo run the student example:\n\n    $ cd ucblogo/\n    $ rlwrap clogo\n    ? load \"student\n    Loaded\n    ? student :radio\n    \u003cprintout of the solution of a mathematical word problem\u003e\n\nLICENSE\n\nMost of the interpreter is released under version 3 or later of the GNU\nGeneral Public License.\n\nThe Logo library procedures in ucblogolib.txt are from Ucblogo and\nare covered by version 2 or later of the GNU General Public License.\n\nThe garbage collector is released under version 2.0 of the Apache\nLicense.\n\nLIMITATIONS AND INCOMPATIBILITIES COMPARED TO UCBLOGO\n\n* The reader and the treeifier use recursive descent parsers written in\n  C.  They can be crashed with pathologically long or deep structures.\n\n* There is no support for getter/setter notation, or GLOBAL.\n\n* No TEST/IFTRUE/IFFALSE.\n\n* No TAG/GOTO.\n\n* Slot number variables only go up to ?10.\n\n* There is no RUNPARSE.  Lists are only parsed once.  [a+b] is a list with\n  three items.\n\n* Backslashed characters do not keep any special properties.  There is no\n  BACKSLASHEDP.\n\n* SETITEM behaves the same as .SETITEM behaves.  It does not check for cycles.\n\n* LOCAL will not work inside of templates run with APPLY, INVOKE, FOR, etc.\n\n* There is no PENREVERSE.\n\n* There is no PALETTE/SETPALETTE.  Color commands take rgb lists, with\n  each value ranging from 0-255.\n\n* There is no SETPENPATTERN/PENPATTERN.  (These are NOPs on several ucblogo\n  platforms as well.)\n\n* There is no SETSCRUNCH/SCRUNCH.\n\n* SAVEPICT/LOADPICT use PNG format.  There is no EPSPICT.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluvisi%2Fcontinuinglogo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluvisi%2Fcontinuinglogo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluvisi%2Fcontinuinglogo/lists"}