Mercurial > repo
annotate interps/brachylog/brachylog/Brachylog-master/README.md @ 11868:70dedbc831e9 draft
<ais523> ` mv ibin/brachylog interps/brachylog
author | HackEso <hackeso@esolangs.org> |
---|---|
date | Tue, 16 Jul 2019 21:39:11 +0000 |
parents | ibin/brachylog/Brachylog-master/README.md@318de151d0ec |
children |
rev | line source |
---|---|
11865
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
1 <p align="center"><a href="https://github.com/JCumin/Brachylog"><img src="https://github.com/JCumin/Brachylog/blob/master/misc/brachylog_logo.png" alt="Brachylog" width="600"/></a></p> |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
2 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
3 # What is it? |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
4 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
5 Brachylog is a declarative logic programming language much like Prolog. Brachylog is designed to be much terser than Prolog, while retaining some readability. |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
6 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
7 Currently in development. |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
8 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
9 Brachylog uses [SWI-Prolog](http://www.swi-prolog.org/) as Prolog engine. |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
10 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
11 ## How do I use this? |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
12 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
13 ### Documentation |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
14 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
15 Check out [Brachylog's Wiki](https://github.com/JCumin/Brachylog/wiki) if you want to learn how to write programs in this language. |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
16 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
17 You may want to watch this [**short video introduction to Brachylog**](https://www.youtube.com/watch?v=XYVhZ-MFcUs). |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
18 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
19 ### Try it online! |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
20 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
21 You can try out Brachylog on [Try it online!](https://tio.run/nexus/brachylog2), thanks to @DennisMitchell. |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
22 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
23 ### Brachylog language bar |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
24 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
25 [You can find here](https://abrudz.github.io/lb/brachylog) the Brachylog language bar which gives you access to all symbols used in Brachylog on any webpage (by clicking on the symbols or by inputing shortcuts), thanks to @abrudz. |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
26 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
27 ### The interpreter |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
28 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
29 Brachylog's interpreter is entirely written in Prolog. Therefore, installing [SWI-Prolog](http://www.swi-prolog.org/) (version 7 and up) is mandatory to use Brachylog (We do not guarantee that Brachylog's interpreter will be compatible with any other Prolog implementation). |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
30 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
31 To run Brachylog's interpreter, start SWI-Prolog's interpreter inside the `src` directory available in this repository, and consult the file `brachylog.pl` (`consult(brachylog).`). Alternatively, you can run the interpreter with: |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
32 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
33 $ swipl src/brachylog.pl |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
34 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
35 You can then run Brachylog programs using different predicates: |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
36 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
37 - `run_from_file(FileName, Input, Output)`: `FileName` is an atom (i.e. between single quotes `'`) representing the file containing your Brachylog code. For example: `run_from_file('code.brachylog',"Test Input",Z)`. |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
38 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
39 - `run_from_atom(Code, Input, Output)`: `Code` is an atom (i.e. between single quotes `'`) containing your Brachylog code. For example: `run_from_atom('∧"Hello, World!"w',_,_)`. Note that you will have to escape certain characters in `Code`. |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
40 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
41 - `run(Input, Output)`: This will run a Brachylog program that has already been transpiled to Prolog using either of the two previous predicates. More precisely, this will query `brachylog_main/2` in the file `compiled_brachylog.pl`. |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
42 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
43 The first two predicates will transpile your Brachylog program into Prolog, subsequently generating a file called `compiled_brachylog.pl` in the same directory that contains `brachylog.pl`. The three run predicates will then consult it and query `brachylog_main/3`. |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
44 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
45 Note that the first two run predicates also exist with either no `Output` argument, or with no `Input` nor `Output` argument, if necessary. For example, `run_from_file('code.brachylog')` is equivalent to `run_from_file('code.brachylog', _, _)`. |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
46 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
47 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
48 ### Contributors |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
49 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
50 - Julien Cumin - [@JCumin](https://github.com/JCumin) |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
51 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
52 - Markus Triska - [@triska](https://github.com/triska) |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
53 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
54 - ais523 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
55 |
318de151d0ec
<b_jonas> python3 -cimport os,zipfile; os.chdir("ibin/brachylog"); zipfile.ZipFile("master.zip").extractall()
HackEso <hackeso@esolangs.org>
parents:
diff
changeset
|
56 - [@UnrelatedString](https://github.com/UnrelatedString) |