halunke 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +16 -31
- data/docs/.gitignore +1 -0
- data/docs/Gemfile +3 -0
- data/docs/Gemfile.lock +239 -0
- data/docs/_config.yml +11 -0
- data/docs/_layouts/default.html +61 -0
- data/docs/index.md +77 -0
- data/halunke.gemspec +2 -2
- data/lib/halunke/version.rb +1 -1
- metadata +9 -4
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1cf23103f236d1d5c248fe1bf071db2e49873fe1
|
|
4
|
+
data.tar.gz: 03a326bb35a35d4a6711b5e72ab11cd6f55fec40
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: dba700ccf46564d88034913a3ff10168cbb6acb0d50abbcf9d3a0f32cdcdb12ccf594b877f0e20fce4d70f1f50df69095ffedfb1ccccefcb07d811c885d66bd8
|
|
7
|
+
data.tar.gz: 7d641c828755558b4581fccdd536a82bf8ac4434c667c3731d74ad0404f64d31f602f9c66a00d346cc88b07c4a15719fdacd1676345c0d825c734ccf3eafbd4d
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
|
@@ -1,43 +1,28 @@
|
|
|
1
1
|
# Halunke
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Halunke is a dynamic, object-oriented language that has a simple grammar
|
|
4
|
+
inspired by Smalltalk and Lisp. It is created to show that interesting
|
|
5
|
+
characteristics traditionally described as "functional" make sense in an
|
|
6
|
+
object-oriented language:
|
|
4
7
|
|
|
5
|
-
|
|
8
|
+
* Separation of identity and data (but not data and behavior)
|
|
9
|
+
* Immutability and persistent data structures
|
|
10
|
+
* Isolation of Side-Effects
|
|
11
|
+
* Pattern matching
|
|
6
12
|
|
|
7
|
-
|
|
13
|
+
It also has the following characteristics:
|
|
8
14
|
|
|
9
|
-
|
|
15
|
+
* There is no null/nil value in the language
|
|
10
16
|
|
|
11
|
-
|
|
12
|
-
gem 'halunke'
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
And then execute:
|
|
16
|
-
|
|
17
|
-
$ bundle
|
|
18
|
-
|
|
19
|
-
Or install it yourself as:
|
|
20
|
-
|
|
21
|
-
$ gem install halunke
|
|
22
|
-
|
|
23
|
-
## Usage
|
|
24
|
-
|
|
25
|
-
TODO: Write usage instructions here
|
|
26
|
-
|
|
27
|
-
## Development
|
|
28
|
-
|
|
29
|
-
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
|
30
|
-
|
|
31
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
|
32
|
-
|
|
33
|
-
## Contributing
|
|
34
|
-
|
|
35
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/halunke. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
|
17
|
+
Find out more on the [documentation page](https://moonglum.github.io/halunke).
|
|
36
18
|
|
|
37
19
|
## License
|
|
38
20
|
|
|
39
|
-
The
|
|
21
|
+
The project is available as open source under the terms of the [MIT
|
|
22
|
+
License](https://opensource.org/licenses/MIT).
|
|
40
23
|
|
|
41
24
|
## Code of Conduct
|
|
42
25
|
|
|
43
|
-
Everyone interacting in the Halunke project’s codebases, issue trackers, chat
|
|
26
|
+
Everyone interacting in the Halunke project’s codebases, issue trackers, chat
|
|
27
|
+
rooms and mailing lists is expected to follow the [code of
|
|
28
|
+
conduct](https://github.com/moonglum/halunke/blob/master/CODE_OF_CONDUCT.md).
|
data/docs/.gitignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/_site
|
data/docs/Gemfile
ADDED
data/docs/Gemfile.lock
ADDED
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
GEM
|
|
2
|
+
remote: https://rubygems.org/
|
|
3
|
+
specs:
|
|
4
|
+
activesupport (4.2.9)
|
|
5
|
+
i18n (~> 0.7)
|
|
6
|
+
minitest (~> 5.1)
|
|
7
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
|
8
|
+
tzinfo (~> 1.1)
|
|
9
|
+
addressable (2.5.2)
|
|
10
|
+
public_suffix (>= 2.0.2, < 4.0)
|
|
11
|
+
coffee-script (2.4.1)
|
|
12
|
+
coffee-script-source
|
|
13
|
+
execjs
|
|
14
|
+
coffee-script-source (1.11.1)
|
|
15
|
+
colorator (1.1.0)
|
|
16
|
+
commonmarker (0.17.7.1)
|
|
17
|
+
ruby-enum (~> 0.5)
|
|
18
|
+
concurrent-ruby (1.0.5)
|
|
19
|
+
ethon (0.11.0)
|
|
20
|
+
ffi (>= 1.3.0)
|
|
21
|
+
execjs (2.7.0)
|
|
22
|
+
faraday (0.14.0)
|
|
23
|
+
multipart-post (>= 1.2, < 3)
|
|
24
|
+
ffi (1.9.21)
|
|
25
|
+
forwardable-extended (2.6.0)
|
|
26
|
+
gemoji (3.0.0)
|
|
27
|
+
github-pages (176)
|
|
28
|
+
activesupport (= 4.2.9)
|
|
29
|
+
github-pages-health-check (= 1.3.5)
|
|
30
|
+
jekyll (= 3.6.2)
|
|
31
|
+
jekyll-avatar (= 0.5.0)
|
|
32
|
+
jekyll-coffeescript (= 1.0.2)
|
|
33
|
+
jekyll-commonmark-ghpages (= 0.1.4)
|
|
34
|
+
jekyll-default-layout (= 0.1.4)
|
|
35
|
+
jekyll-feed (= 0.9.2)
|
|
36
|
+
jekyll-gist (= 1.4.1)
|
|
37
|
+
jekyll-github-metadata (= 2.9.3)
|
|
38
|
+
jekyll-mentions (= 1.2.0)
|
|
39
|
+
jekyll-optional-front-matter (= 0.3.0)
|
|
40
|
+
jekyll-paginate (= 1.1.0)
|
|
41
|
+
jekyll-readme-index (= 0.2.0)
|
|
42
|
+
jekyll-redirect-from (= 0.12.1)
|
|
43
|
+
jekyll-relative-links (= 0.5.2)
|
|
44
|
+
jekyll-remote-theme (= 0.2.3)
|
|
45
|
+
jekyll-sass-converter (= 1.5.0)
|
|
46
|
+
jekyll-seo-tag (= 2.3.0)
|
|
47
|
+
jekyll-sitemap (= 1.1.1)
|
|
48
|
+
jekyll-swiss (= 0.4.0)
|
|
49
|
+
jekyll-theme-architect (= 0.1.0)
|
|
50
|
+
jekyll-theme-cayman (= 0.1.0)
|
|
51
|
+
jekyll-theme-dinky (= 0.1.0)
|
|
52
|
+
jekyll-theme-hacker (= 0.1.0)
|
|
53
|
+
jekyll-theme-leap-day (= 0.1.0)
|
|
54
|
+
jekyll-theme-merlot (= 0.1.0)
|
|
55
|
+
jekyll-theme-midnight (= 0.1.0)
|
|
56
|
+
jekyll-theme-minimal (= 0.1.0)
|
|
57
|
+
jekyll-theme-modernist (= 0.1.0)
|
|
58
|
+
jekyll-theme-primer (= 0.5.2)
|
|
59
|
+
jekyll-theme-slate (= 0.1.0)
|
|
60
|
+
jekyll-theme-tactile (= 0.1.0)
|
|
61
|
+
jekyll-theme-time-machine (= 0.1.0)
|
|
62
|
+
jekyll-titles-from-headings (= 0.5.0)
|
|
63
|
+
jemoji (= 0.8.1)
|
|
64
|
+
kramdown (= 1.16.2)
|
|
65
|
+
liquid (= 4.0.0)
|
|
66
|
+
listen (= 3.0.6)
|
|
67
|
+
mercenary (~> 0.3)
|
|
68
|
+
minima (= 2.1.1)
|
|
69
|
+
nokogiri (>= 1.8.1, < 2.0)
|
|
70
|
+
rouge (= 2.2.1)
|
|
71
|
+
terminal-table (~> 1.4)
|
|
72
|
+
github-pages-health-check (1.3.5)
|
|
73
|
+
addressable (~> 2.3)
|
|
74
|
+
net-dns (~> 0.8)
|
|
75
|
+
octokit (~> 4.0)
|
|
76
|
+
public_suffix (~> 2.0)
|
|
77
|
+
typhoeus (~> 0.7)
|
|
78
|
+
html-pipeline (2.7.1)
|
|
79
|
+
activesupport (>= 2)
|
|
80
|
+
nokogiri (>= 1.4)
|
|
81
|
+
i18n (0.9.4)
|
|
82
|
+
concurrent-ruby (~> 1.0)
|
|
83
|
+
jekyll (3.6.2)
|
|
84
|
+
addressable (~> 2.4)
|
|
85
|
+
colorator (~> 1.0)
|
|
86
|
+
jekyll-sass-converter (~> 1.0)
|
|
87
|
+
jekyll-watch (~> 1.1)
|
|
88
|
+
kramdown (~> 1.14)
|
|
89
|
+
liquid (~> 4.0)
|
|
90
|
+
mercenary (~> 0.3.3)
|
|
91
|
+
pathutil (~> 0.9)
|
|
92
|
+
rouge (>= 1.7, < 3)
|
|
93
|
+
safe_yaml (~> 1.0)
|
|
94
|
+
jekyll-avatar (0.5.0)
|
|
95
|
+
jekyll (~> 3.0)
|
|
96
|
+
jekyll-coffeescript (1.0.2)
|
|
97
|
+
coffee-script (~> 2.2)
|
|
98
|
+
coffee-script-source (~> 1.11.1)
|
|
99
|
+
jekyll-commonmark (1.1.0)
|
|
100
|
+
commonmarker (~> 0.14)
|
|
101
|
+
jekyll (>= 3.0, < 4.0)
|
|
102
|
+
jekyll-commonmark-ghpages (0.1.4)
|
|
103
|
+
commonmarker (~> 0.17.6)
|
|
104
|
+
jekyll-commonmark (~> 1)
|
|
105
|
+
rouge (~> 2)
|
|
106
|
+
jekyll-default-layout (0.1.4)
|
|
107
|
+
jekyll (~> 3.0)
|
|
108
|
+
jekyll-feed (0.9.2)
|
|
109
|
+
jekyll (~> 3.3)
|
|
110
|
+
jekyll-gist (1.4.1)
|
|
111
|
+
octokit (~> 4.2)
|
|
112
|
+
jekyll-github-metadata (2.9.3)
|
|
113
|
+
jekyll (~> 3.1)
|
|
114
|
+
octokit (~> 4.0, != 4.4.0)
|
|
115
|
+
jekyll-mentions (1.2.0)
|
|
116
|
+
activesupport (~> 4.0)
|
|
117
|
+
html-pipeline (~> 2.3)
|
|
118
|
+
jekyll (~> 3.0)
|
|
119
|
+
jekyll-optional-front-matter (0.3.0)
|
|
120
|
+
jekyll (~> 3.0)
|
|
121
|
+
jekyll-paginate (1.1.0)
|
|
122
|
+
jekyll-readme-index (0.2.0)
|
|
123
|
+
jekyll (~> 3.0)
|
|
124
|
+
jekyll-redirect-from (0.12.1)
|
|
125
|
+
jekyll (~> 3.3)
|
|
126
|
+
jekyll-relative-links (0.5.2)
|
|
127
|
+
jekyll (~> 3.3)
|
|
128
|
+
jekyll-remote-theme (0.2.3)
|
|
129
|
+
jekyll (~> 3.5)
|
|
130
|
+
rubyzip (>= 1.2.1, < 3.0)
|
|
131
|
+
typhoeus (>= 0.7, < 2.0)
|
|
132
|
+
jekyll-sass-converter (1.5.0)
|
|
133
|
+
sass (~> 3.4)
|
|
134
|
+
jekyll-seo-tag (2.3.0)
|
|
135
|
+
jekyll (~> 3.3)
|
|
136
|
+
jekyll-sitemap (1.1.1)
|
|
137
|
+
jekyll (~> 3.3)
|
|
138
|
+
jekyll-swiss (0.4.0)
|
|
139
|
+
jekyll-theme-architect (0.1.0)
|
|
140
|
+
jekyll (~> 3.5)
|
|
141
|
+
jekyll-seo-tag (~> 2.0)
|
|
142
|
+
jekyll-theme-cayman (0.1.0)
|
|
143
|
+
jekyll (~> 3.5)
|
|
144
|
+
jekyll-seo-tag (~> 2.0)
|
|
145
|
+
jekyll-theme-dinky (0.1.0)
|
|
146
|
+
jekyll (~> 3.5)
|
|
147
|
+
jekyll-seo-tag (~> 2.0)
|
|
148
|
+
jekyll-theme-hacker (0.1.0)
|
|
149
|
+
jekyll (~> 3.5)
|
|
150
|
+
jekyll-seo-tag (~> 2.0)
|
|
151
|
+
jekyll-theme-leap-day (0.1.0)
|
|
152
|
+
jekyll (~> 3.5)
|
|
153
|
+
jekyll-seo-tag (~> 2.0)
|
|
154
|
+
jekyll-theme-merlot (0.1.0)
|
|
155
|
+
jekyll (~> 3.5)
|
|
156
|
+
jekyll-seo-tag (~> 2.0)
|
|
157
|
+
jekyll-theme-midnight (0.1.0)
|
|
158
|
+
jekyll (~> 3.5)
|
|
159
|
+
jekyll-seo-tag (~> 2.0)
|
|
160
|
+
jekyll-theme-minimal (0.1.0)
|
|
161
|
+
jekyll (~> 3.5)
|
|
162
|
+
jekyll-seo-tag (~> 2.0)
|
|
163
|
+
jekyll-theme-modernist (0.1.0)
|
|
164
|
+
jekyll (~> 3.5)
|
|
165
|
+
jekyll-seo-tag (~> 2.0)
|
|
166
|
+
jekyll-theme-primer (0.5.2)
|
|
167
|
+
jekyll (~> 3.5)
|
|
168
|
+
jekyll-github-metadata (~> 2.9)
|
|
169
|
+
jekyll-seo-tag (~> 2.2)
|
|
170
|
+
jekyll-theme-slate (0.1.0)
|
|
171
|
+
jekyll (~> 3.5)
|
|
172
|
+
jekyll-seo-tag (~> 2.0)
|
|
173
|
+
jekyll-theme-tactile (0.1.0)
|
|
174
|
+
jekyll (~> 3.5)
|
|
175
|
+
jekyll-seo-tag (~> 2.0)
|
|
176
|
+
jekyll-theme-time-machine (0.1.0)
|
|
177
|
+
jekyll (~> 3.5)
|
|
178
|
+
jekyll-seo-tag (~> 2.0)
|
|
179
|
+
jekyll-titles-from-headings (0.5.0)
|
|
180
|
+
jekyll (~> 3.3)
|
|
181
|
+
jekyll-watch (1.5.1)
|
|
182
|
+
listen (~> 3.0)
|
|
183
|
+
jemoji (0.8.1)
|
|
184
|
+
activesupport (~> 4.0, >= 4.2.9)
|
|
185
|
+
gemoji (~> 3.0)
|
|
186
|
+
html-pipeline (~> 2.2)
|
|
187
|
+
jekyll (>= 3.0)
|
|
188
|
+
kramdown (1.16.2)
|
|
189
|
+
liquid (4.0.0)
|
|
190
|
+
listen (3.0.6)
|
|
191
|
+
rb-fsevent (>= 0.9.3)
|
|
192
|
+
rb-inotify (>= 0.9.7)
|
|
193
|
+
mercenary (0.3.6)
|
|
194
|
+
mini_portile2 (2.3.0)
|
|
195
|
+
minima (2.1.1)
|
|
196
|
+
jekyll (~> 3.3)
|
|
197
|
+
minitest (5.11.3)
|
|
198
|
+
multipart-post (2.0.0)
|
|
199
|
+
net-dns (0.8.0)
|
|
200
|
+
nokogiri (1.8.2)
|
|
201
|
+
mini_portile2 (~> 2.3.0)
|
|
202
|
+
octokit (4.8.0)
|
|
203
|
+
sawyer (~> 0.8.0, >= 0.5.3)
|
|
204
|
+
pathutil (0.16.1)
|
|
205
|
+
forwardable-extended (~> 2.6)
|
|
206
|
+
public_suffix (2.0.5)
|
|
207
|
+
rb-fsevent (0.10.2)
|
|
208
|
+
rb-inotify (0.9.10)
|
|
209
|
+
ffi (>= 0.5.0, < 2)
|
|
210
|
+
rouge (2.2.1)
|
|
211
|
+
ruby-enum (0.7.1)
|
|
212
|
+
i18n
|
|
213
|
+
rubyzip (1.2.1)
|
|
214
|
+
safe_yaml (1.0.4)
|
|
215
|
+
sass (3.5.5)
|
|
216
|
+
sass-listen (~> 4.0.0)
|
|
217
|
+
sass-listen (4.0.0)
|
|
218
|
+
rb-fsevent (~> 0.9, >= 0.9.4)
|
|
219
|
+
rb-inotify (~> 0.9, >= 0.9.7)
|
|
220
|
+
sawyer (0.8.1)
|
|
221
|
+
addressable (>= 2.3.5, < 2.6)
|
|
222
|
+
faraday (~> 0.8, < 1.0)
|
|
223
|
+
terminal-table (1.8.0)
|
|
224
|
+
unicode-display_width (~> 1.1, >= 1.1.1)
|
|
225
|
+
thread_safe (0.3.6)
|
|
226
|
+
typhoeus (0.8.0)
|
|
227
|
+
ethon (>= 0.8.0)
|
|
228
|
+
tzinfo (1.2.5)
|
|
229
|
+
thread_safe (~> 0.1)
|
|
230
|
+
unicode-display_width (1.3.0)
|
|
231
|
+
|
|
232
|
+
PLATFORMS
|
|
233
|
+
ruby
|
|
234
|
+
|
|
235
|
+
DEPENDENCIES
|
|
236
|
+
github-pages
|
|
237
|
+
|
|
238
|
+
BUNDLED WITH
|
|
239
|
+
1.16.1
|
data/docs/_config.yml
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Site settings
|
|
2
|
+
# These are used to personalize your new site. If you look in the HTML files,
|
|
3
|
+
# you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
|
|
4
|
+
# You can create any custom variable you would like, and they will be accessible
|
|
5
|
+
# in the templates via {{ site.myvariable }}.
|
|
6
|
+
title: Halunke!
|
|
7
|
+
description: >-
|
|
8
|
+
Halunke is a dynamic, object-oriented language that has a simple grammar inspired by Smalltalk and Lisp
|
|
9
|
+
|
|
10
|
+
# Build settings
|
|
11
|
+
markdown: kramdown
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="{{ page.lang | default: site.lang | default: "en" }}">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
7
|
+
{% seo %}
|
|
8
|
+
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div class="container">
|
|
12
|
+
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
|
|
13
|
+
<a class="navbar-brand" href="#">Halunke!</a>
|
|
14
|
+
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
|
|
15
|
+
<span class="navbar-toggler-icon"></span>
|
|
16
|
+
</button>
|
|
17
|
+
<div class="collapse navbar-collapse">
|
|
18
|
+
<ul class="navbar-nav">
|
|
19
|
+
<li class="nav-item">
|
|
20
|
+
<a class="nav-link" href="/">Intro</a>
|
|
21
|
+
</li>
|
|
22
|
+
<li class="nav-item">
|
|
23
|
+
<a class="nav-link" href="/number">Number</a>
|
|
24
|
+
</li>
|
|
25
|
+
<li class="nav-item">
|
|
26
|
+
<a class="nav-link" href="/string">String</a>
|
|
27
|
+
</li>
|
|
28
|
+
<li class="nav-item">
|
|
29
|
+
<a class="nav-link" href="/array">Array</a>
|
|
30
|
+
</li>
|
|
31
|
+
<li class="nav-item">
|
|
32
|
+
<a class="nav-link" href="/dictionary">Dictionary</a>
|
|
33
|
+
</li>
|
|
34
|
+
<li class="nav-item">
|
|
35
|
+
<a class="nav-link" href="/true-false">True & False</a>
|
|
36
|
+
</li>
|
|
37
|
+
<li class="nav-item">
|
|
38
|
+
<a class="nav-link" href="/function">Function</a>
|
|
39
|
+
</li>
|
|
40
|
+
<li class="nav-item">
|
|
41
|
+
<a class="nav-link" href="/class">Class</a>
|
|
42
|
+
</li>
|
|
43
|
+
<li class="nav-item">
|
|
44
|
+
<a class="nav-link" href="/true-false">Stdio</a>
|
|
45
|
+
</li>
|
|
46
|
+
<li class="nav-item">
|
|
47
|
+
<a class="nav-link" href="/true-false">Web</a>
|
|
48
|
+
</li>
|
|
49
|
+
</ul>
|
|
50
|
+
</div>
|
|
51
|
+
</nav>
|
|
52
|
+
|
|
53
|
+
<header>
|
|
54
|
+
<h1>{{ page.title }}</h1>
|
|
55
|
+
</header>
|
|
56
|
+
<main>
|
|
57
|
+
{{ content }}
|
|
58
|
+
</main>
|
|
59
|
+
</div>
|
|
60
|
+
</body>
|
|
61
|
+
</html>
|
data/docs/index.md
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
layout: default
|
|
3
|
+
title: Welcome to Halunke!
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
Halunke is a dynamic, object-oriented language that has a simple grammar
|
|
7
|
+
inspired by Smalltalk and Lisp. It is created to show that interesting
|
|
8
|
+
characteristics traditionally described as "functional" make sense in an
|
|
9
|
+
object-oriented language:
|
|
10
|
+
|
|
11
|
+
* Separation of identity and data (but not data and behavior)
|
|
12
|
+
* Immutability and persistent data structures
|
|
13
|
+
* Isolation of Side-Effects
|
|
14
|
+
* Pattern matching
|
|
15
|
+
|
|
16
|
+
It also has the following characteristics:
|
|
17
|
+
|
|
18
|
+
* There is no null/nil value in the language
|
|
19
|
+
|
|
20
|
+
## Install & Usage
|
|
21
|
+
|
|
22
|
+
Halunke is written in Ruby, and can be installed with:
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
gem install halunke
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
You can start a REPL with `halunke` or run a file with `halunke file.hal`.
|
|
29
|
+
|
|
30
|
+
## How it works
|
|
31
|
+
|
|
32
|
+
In Halunke, everything is an object. And you can send messages to Objects.
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
(1 + 2)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
`1` and `2` are both objects. You can send a message to an object by using
|
|
39
|
+
parentheses: You first provide the name of the receiver followed by a message.
|
|
40
|
+
In this case you send the message `+` to `1` with the value [`2`]. It will
|
|
41
|
+
return the object `3`.
|
|
42
|
+
|
|
43
|
+
You can also send a message without any value. An example for that would be to
|
|
44
|
+
reverse a string:
|
|
45
|
+
|
|
46
|
+
```
|
|
47
|
+
("Halunke!" reverse)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
This will return `"!eknulaH"`. If you want to provide more than one value, it
|
|
51
|
+
works like this:
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
("Halunke!" replace "Ha" with "Spe")
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
This will return `"Spelunke!"`. The message we send here is `replace with` and
|
|
58
|
+
the value is `["Ha" "Spe"]`.
|
|
59
|
+
|
|
60
|
+
If you want to find out more about the types of objects in Halunke and the
|
|
61
|
+
messages you can send to them, explore the navigation bar at the top. If you
|
|
62
|
+
want to learn more about conditionals, check out the section about [True &
|
|
63
|
+
False](/true-false). If you want to write your own functions, check out
|
|
64
|
+
[Function](/function) and if you want to define your own classes, check out
|
|
65
|
+
[Class](/class).
|
|
66
|
+
|
|
67
|
+
If you want to store an object in a variable, you can do it like this:
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
('a = 12)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Now you can send messages to `a` like `(a + 2)`. Why is there a `'` though? The
|
|
74
|
+
`'` signals an unassigned bareword. That means you can send it a `=` message
|
|
75
|
+
with a value, and it will assign it. Be aware that you can't reassign. So if
|
|
76
|
+
you assign something to a once, it will stay like this forever (within that
|
|
77
|
+
scope). Reassigning will result in an error.
|
data/halunke.gemspec
CHANGED
|
@@ -10,8 +10,8 @@ Gem::Specification.new do |spec|
|
|
|
10
10
|
spec.email = ["lucas@dohmen.io"]
|
|
11
11
|
|
|
12
12
|
spec.summary = %q{The Halunke programming language}
|
|
13
|
-
spec.description = %q{A
|
|
14
|
-
spec.homepage = "https://github.
|
|
13
|
+
spec.description = %q{A dynamic OO language with ideas traditionally described as "functional"}
|
|
14
|
+
spec.homepage = "https://moonglum.github.io/halunke"
|
|
15
15
|
spec.license = "MIT"
|
|
16
16
|
|
|
17
17
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
data/lib/halunke/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: halunke
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.3.
|
|
4
|
+
version: 0.3.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Lucas Dohmen
|
|
@@ -80,8 +80,7 @@ dependencies:
|
|
|
80
80
|
- - "~>"
|
|
81
81
|
- !ruby/object:Gem::Version
|
|
82
82
|
version: 1.4.14
|
|
83
|
-
description: A
|
|
84
|
-
and Lispyness
|
|
83
|
+
description: A dynamic OO language with ideas traditionally described as "functional"
|
|
85
84
|
email:
|
|
86
85
|
- lucas@dohmen.io
|
|
87
86
|
executables:
|
|
@@ -100,6 +99,12 @@ files:
|
|
|
100
99
|
- Rakefile
|
|
101
100
|
- bin/console
|
|
102
101
|
- bin/setup
|
|
102
|
+
- docs/.gitignore
|
|
103
|
+
- docs/Gemfile
|
|
104
|
+
- docs/Gemfile.lock
|
|
105
|
+
- docs/_config.yml
|
|
106
|
+
- docs/_layouts/default.html
|
|
107
|
+
- docs/index.md
|
|
103
108
|
- examples/hello.hal
|
|
104
109
|
- examples/web.hal
|
|
105
110
|
- exe/halunke
|
|
@@ -126,7 +131,7 @@ files:
|
|
|
126
131
|
- lib/halunke/runtime/hweb.rb
|
|
127
132
|
- lib/halunke/runtime/true.hal
|
|
128
133
|
- lib/halunke/version.rb
|
|
129
|
-
homepage: https://github.
|
|
134
|
+
homepage: https://moonglum.github.io/halunke
|
|
130
135
|
licenses:
|
|
131
136
|
- MIT
|
|
132
137
|
metadata: {}
|