summaryrefslogtreecommitdiff
path: root/gnu/packages/esolangs.scm
blob: 0651dda1b0297ac2792c0877960c98f883228e4e (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Nikita <nikita@n0.is>
;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2020 Hendursaga <hendursaga@yahoo.com>
;;; Copyright © 2020 Liliana Marie Prikler <liliana.prikler@gmail.com>
;;; Copyright © 2022 jgart <jgart@dismail.de>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.

(define-module (gnu packages esolangs)
  #:use-module (gnu packages)
  #:use-module (gnu packages bison)
  #:use-module (gnu packages flex)
  #:use-module (gnu packages ncurses)
  #:use-module (gnu packages python)
  #:use-module (gnu packages readline)
  #:use-module (guix build-system cmake)
  #:use-module (guix build-system copy)
  #:use-module (guix build-system gnu)
  #:use-module (guix build-system python)
  #:use-module (guix download)
  #:use-module (guix git-download)
  #:use-module ((guix licenses) #:prefix license:)
  #:use-module (guix packages))

(define-public cfunge
  (package
    (name "cfunge")
    (version "0.9.0")
    (source (origin
              (method git-fetch)
              (uri (git-reference
                    (url "https://github.com/VorpalBlade/cfunge")
                    (commit version)))
              (file-name (git-file-name name version))
              (sha256
               (base32
                "18ir0h10vxdb5jb57w5hjbgi8spjxg9x2148agadhhmbhsja02m7"))))
    (build-system cmake-build-system)
    (arguments
      ;; The tests are not designed to be run and evaluated automatically.
     '(#:tests? #f))
    (inputs
     (list ncurses))
    (home-page "https://github.com/VorpalBlade/cfunge")
    (synopsis "Fast conforming Befunge93/98/109 interpreter in C")
    (description "@command{cfunge} is a fast conforming Befunge93/98/109 interpreter
written in C.  It supports several @dfn{fingerprints} (opt-in language extensions
identified by unique ID codes).")
    (license license:gpl3)))

(define-public lolcode-lci
  ;; Use the latest commit as the last release is from 2014 with Python 2.
  (let ((commit "6762b724361a4fb471345961b4750657783aeb3b")
        (revision "0"))
    (package
      (name "lolcode-lci")
      (version (git-version "0.11.2" revision commit))
      (source
       (origin
         (method git-fetch)
         (uri (git-reference
               (url "https://github.com/justinmeza/lci")
               (commit commit)))
         (file-name (git-file-name name version))
         (sha256
          (base32 "0phqnqp7qvkn0kxkk5qsc76b9gxs932w4dy3jm96pmknh1q7h6kk"))))
      (build-system cmake-build-system)
      ;; The test suite is currently failing with Python 3 (see:
      ;; https://github.com/justinmeza/lci/issues/75).
      (arguments (list #:tests? #f))
      (inputs
       (list readline))
      (native-inputs
       (list python-wrapper))           ; for the tests
      (synopsis "LOLCODE interpreter written in C")
      (description
       "@code{lci} is a LOLCODE interpreter written in C and is designed to be
correct, portable, fast, and precisely documented.
@enumerate
@item correct: Every effort has been made to test lci's conformance to the
LOLCODE language specification.  Unit tests come packaged with the lci source code.
@item portable: lci follows the widely ported ANSI C specification allowing it
to compile on a broad range of systems.
@item fast: Much effort has gone into producing simple and efficient code
whenever possible to the extent that the above points are not compromized.
@end enumerate")
      (home-page "http://lolcode.org/")
      (license license:gpl3+))))

(define-public folders
  (package
    (name "folders")
    (version "0.0.8")
    (source
      (origin
        (method url-fetch)
        (uri (pypi-uri "Folders" version))
        (sha256
          (base32 "0qh80qx7sjx0zii1hf8fm853d9rcg4rginm6v4gpp0hgn2a4q4gh"))))
    (build-system python-build-system)
    (home-page "https://github.com/SinaKhalili/Folders.py")
    (synopsis "Structural programming language")
    (description "Folders is a programming language, in which programs
are encoded as (nested) directories.  Note that the switches you pass to
@command{du} may affect your score when code golfing.")
    (license license:expat)))

(define-public shakespeare-spl
  (package
    (name "shakespeare-spl")
    (version "1.2.1")
    (source (origin
              (method url-fetch)
              (uri (string-append "mirror://sourceforge/shakespearelang/spl-"
                                  version ".tar.gz"))
              (sha256
               (base32
                "1lxpfhv01kcwy4l4xgx7j765g8g0v74jns0cr908nfw55h5fy1hj"))
              (patches
               (search-patches
                "shakespeare-spl-fix-grammar.patch"))))
    (build-system copy-build-system)
    (arguments
     `(#:imported-modules (,@%gnu-build-system-modules
                           (guix build copy-build-system))
       #:modules ((guix build copy-build-system)
                  ((guix build gnu-build-system) #:prefix gnu:)
                  (guix build utils))
       #:install-plan '(("spl/bin" "bin")
                        ("spl/lib" "lib")
                        ("spl/include" "include"))
       #:phases
       (modify-phases %standard-phases
         (add-before 'install 'build
           (assoc-ref gnu:%standard-phases 'build)))))
    (native-inputs
     (list bison flex))
    (home-page "http://shakespearelang.sourceforge.net/")
    (synopsis "Write programs like Shakespearean plays")
    (description "Shakespeare is a programming language with the design goal
of making programs read like plays.  The characters in the play are variables.
If you want to assign a character, let's say Juliet, a positive value, you put
her and another character on the stage and let that character praise Juliet.")
    (license license:gpl2+)))