{"id":20842832,"url":"https://github.com/mudge/mudgel","last_synced_at":"2025-10-24T05:01:38.632Z","repository":{"id":66366865,"uuid":"47031144","full_name":"mudge/mudgel","owner":"mudge","description":"A toy programming language and an implementation of FizzBuzz","archived":false,"fork":false,"pushed_at":"2015-12-01T13:22:18.000Z","size":19,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-07T16:55:26.989Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mudge.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-11-28T16:38:01.000Z","updated_at":"2015-11-28T20:04:07.000Z","dependencies_parsed_at":"2023-02-20T16:01:15.281Z","dependency_job_id":null,"html_url":"https://github.com/mudge/mudgel","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/mudge%2Fmudgel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mudge%2Fmudgel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mudge%2Fmudgel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mudge%2Fmudgel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mudge","download_url":"https://codeload.github.com/mudge/mudgel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243198667,"owners_count":20252250,"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-18T01:25:39.717Z","updated_at":"2025-10-24T05:01:33.576Z","avatar_url":"https://github.com/mudge.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Mudgel [![Build Status](https://travis-ci.org/mudge/mudgel.svg?branch=master)](http://travis-ci.org/mudge/mudgel)\n\n    firstly, let i be 1 followed by while something known as i is less than\n    101, firstly, if 0 is equal to the remainder after dividing something\n    known as i and 15 then print \"FizzBuzz\" otherwise if 0 is equal to the\n    remainder after dividing something known as i and 5 then print \"Buzz\"\n    otherwise if 0 is equal to the remainder after dividing something known as\n    i and 3 then print \"Fizz\" otherwise print something known as i followed by\n    let i be one more than something known as i\n\nOr, if you prefer a slightly less adventurous grammar:\n\n    let i = 1;\n    while (i \u003c 101) {\n      if (0 = i % 15) {\n        print(\"FizzBuzz\")\n      } else {\n        if (0 = i % 5) {\n          print(\"Buzz\")\n        } else {\n          if (0 = i % 3) {\n            print(\"Fizz\")\n          } else {\n            print(i)\n          }\n        }\n      };\n      let i = i + 1\n    }\n\nOr, if you are a fan of parentheses:\n\n    (do\n      (let i 1)\n      (while (\u003c i 101)\n             (do\n                (if (= 0 (% i 15))\n                    (print \"FizzBuzz\")\n                    (if (= 0 (% i 5))\n                        (print \"Buzz\")\n                        (if (= 0 (% i 3))\n                            (print \"Fizz\")\n                            (print i))))\n                (let i (inc i)))))\n\nAn experiment in implementing a (rather silly) programming language that\ncompiles to different backends (specifically, Ruby, JavaScript and Clojure) in\norder to explore the FizzBuzz problem.\n\n## Usage\n\n```console\n$ bin/mudgel --ruby fizzbuzz.mudgel \u003e fizzbuzz.rb\n$ bin/mudgel --javascript fizzbuzz.mudgel \u003e fizzbuzz.js\n$ bin/mudgel --clojure fizzbuzz.mudgel \u003e fizzbuzz.clj\n$ ruby fizzbuzz.rb\n$ node fizzbuzz.js\n$ lein exec fizzbuzz.clj\n```\n\n## Acknowledgements\n\nThis owes a huge amount to [Tom Stuart's example code for \"Understanding\nComputation\"](https://github.com/tomstuart/computationbook), specifically the\nsection on denotational semantics.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmudge%2Fmudgel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmudge%2Fmudgel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmudge%2Fmudgel/lists"}