-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathhomepage.jade
237 lines (186 loc) · 9.04 KB
/
homepage.jade
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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
.content.has-text-centered.is-large
blockquote.
Ironscript is a minimal LISP like programming language implemented in Javascript.
It is interpreted and the interpreter is written in ES2015. Currently we have an
<strong>interpreter</strong> that runs on browser and nodejs environments and a
<strong>bundler</strong> to bundle ironscript modules into .js files for the browser.
section.section
.columns
article.column.is-half.margin-10.content.notification.transparent
h3.subtitle.is-3.green-text.text-darken-3.has-text-centered Ironscript IS
dl
dt
strong.subtitle.is-5.green-text.text-darken-4 LISP and Javascript Mixed.
dd.
Ironscript is essentially an S-Expression evaluator written in Javascript.
This evaluator can use functions written Javascript and interact with the
JS environment at runtime through those functions. In fact you can write
Javascript functions inside your Ironscript S-Expressions using a simple API.
dt
strong.subtitle.is-5.green-text.text-darken-4 Functional.
dd.
Ironscript is essentially a LISP over JS, every valid Ironscript statement /
expression / program is an <strong>S-Expression</strong>. You will be writing
mostly functions and streams to express your logic in Ironscript.
dt
strong.subtitle.is-5.green-text.text-darken-4 Better suited for expressing Asynchronous data flows.
dd.
The S-Expression <strong>evaluator is written in CPS (Continuation Passing Style)</strong>.
Therefore it's a tiny bit slower than synchronous Javascript. But it enables the
programmer to express complex asynchronous data and control flows linearly.
dt
strong.subtitle.is-5.green-text.text-darken-4 Modular, Easy to Learn, Use and Extend.
dd.
Ironscript provides an easy-syntax module in the standard library (stdlib),
that provides some frequently used syntactial abstractions as pattern rewriting
rules. Ironscript also provides an easy construct for defining pattern rewrite rules.
dt
strong.subtitle.is-5.green-text.text-darken-4 Free and OpenSource
dd.
Free as in 'freedom'. Ironscript is licensed
<a href="http://opensource.org/licenses/mit-license.php">MIT</a>
and the source is hosted on github.
article.column.content.notification.transparent
h3.subtitle.is-3.red-text.text-darken-3.has-text-centered Ironscript IS NOT
dl
dt
strong.subtitle.is-5.red-text.text-darken-4 CommonLISP or Scheme or ...
dd.
Ironscript is a LISP with its own syntactical conventions. Ironscript is
not designed to be pure LISP or Pure Javascript. It's designed to be minimal,
easily extendable and suitable for <strong>Rapid Prototyping</strong>
of applications. Its design goals are not syntactical or theoretical purity.
We are more concerned about simplicity and extensibility.
dt
strong.subtitle.is-5.red-text.text-darken-4 Compiled to Javascript.
emph.subtitle.is-5 (But will be)
dd.
Currently we do not have an Ironscript to JS transpiler. We do hope to have
a decent Optimizing Compiler to JS from v1.3 onwards. Currently there is a lot of
room for optimizations to be exploited, the interpretation is reasonably fast but
with an Optimizing Compiler we can generate better Javascript.
dt
strong.subtitle.is-5.red-text.text-darken-4 Limited to the Browserland
dd.
Ironscript can run 'literally' anywhere, where Javascript can run. That includes
servers via NodeJS, mobile applications via Cordova / PhoneGap. And as for the browser,
<strong>this website is written in Ironscript</strong>. Ironscript has been tested on Cordova too.
dt
strong.subtitle.is-5.red-text.text-darken-4 Stable Yet.
dd.
As of March 2017 (i.e. when this webpage was written), all these 'we' in this
document is a single person. Therefore the pace of development is slow and the
design goals are driven by the needs of an individual.
<strong>Contribute to make it better and more stable</strong>.
section.section#get-features
h1.title.is-2.has-text-centered Features
hr.grey-text.text-darken-2
.tile.is-ancestor.is-parent
article.tile.is-4.is-child.has-text-centered
.inb
.feature.level
article
h2.title.margin-bottom-20.is-4.deep-orange-text.text-darken-4
span.icon.margin-10: i.fa.fa-code
span Functional
p.subtitle.is-6 LISPlike functional with higher order functions.
article.tile.is-4.is-child.has-text-centered
.inb
.feature.level
article
h2.title.margin-bottom-20.is-4.deep-orange-text.text-darken-4
span.icon.margin-10: i.fa.fa-clone
span Modular
p.subtitle.is-6 Organize your code into modules and reuse.
article.tile.is-4.is-child.has-text-centered
.inb
.feature.level
article
.title.margin-bottom-20.is-4.deep-orange-text.text-darken-4
span.icon.margin-10: i.fa.fa-random
span Asynchronous
p.subtitle.is-6 Built around a CPS S-Expression evaluator.
.tile.is-ancestor.is-parent
article.tile.is-4.is-child.has-text-centered
.inb
.feature.level
article
h2.title.margin-bottom-20.is-4.deep-orange-text.text-darken-4
span.icon.margin-10: i.fa.fa-code-fork
span Streams
p.subtitle.is-6 Streams are live values or values that change asynchronously and are first class citizens in Ironscript.
article.tile.is-4.is-child.has-text-centered
.inb
.feature.level
article
h2.title.margin-bottom-20.is-4.deep-orange-text.text-darken-4
span.icon.margin-10: i.fa.fa-diamond
span Dynamic
p.subtitle.is-6 Ironscript is Dynamically Typed and almost eveything that's not literal is symbolic.
article.tile.is-4.is-child.has-text-centered
.inb
.feature.level
article
h2.title.margin-bottom-20.is-4.deep-orange-text.text-darken-4
span.icon.margin-10: i.fa.fa-paw
span Rapid App Dev
p.subtitle.is-6 Prototype highly interactive apps faster and more easily.
.tile.is-ancestor.is-parent
article.tile.is-4.is-child.has-text-centered
.inb
.feature.level
article
h2.title.margin-bottom-20.is-4.deep-orange-text.text-darken-4
span.icon.margin-10: i.fa.fa-expand
span Extendable
p.subtitle.is-6 Ironscript is easily extendable through Macros, Rewrite Rules and Javascript.
article.tile.is-4.is-child.has-text-centered
.inb
.feature.level
article
h2.title.margin-bottom-20.is-4.deep-orange-text.text-darken-4
span.icon.margin-10: i.fa.fa-compress
span Minimal
p.subtitle.is-6 The Ironscript interpreter and browserside runtime are about 12KB combined.
article.tile.is-4.is-child.has-text-centered
.inb
.feature.level
article
h2.title.margin-bottom-20.is-4.deep-orange-text.text-darken-4
span.icon.margin-10: i.fa.fa-magnet
span Mix with JS
p.subtitle.is-6 Interoperable with Javascript through a powerful embedding syntax and API.
section.section
.content.is-medium
h2.title.is-3.has-text-centered So, What does it LOOK like ?
p.
The following is the <strong>source code of this website</strong>. Do we, all of us, not love
<em>Quines</em> ? Here you can see a <strong>VirtualDOM</strong> implemented in Ironscript
using source code level Javascript embedding. You can also see how the code is neatly organized into
modules. Though the sourcecode is largely uncommented, it's fairly readable.
.language-scheme#quine-div(data-language="scheme")
pre.line-numbers#show-website-src
section.section#get-started
.content.is-medium
h2.title.is-3.has-text-centered Get Started
h5.subtitle.is-4 Installation with NPM
p.
Ironscript is can be installed using npm. The package adds 2 commands to the terminal, <b><code>ironscript</code></b> and
<b><code>ibun</code></b>. It's recommended to install the package globally by using the <b><code>-g</code></b> flag. You may have to
use sudo for installation on Linux depending on your permissions.
pre.has-text-centered
code npm install -g ironscript
h5.subtitle.is-4 Doing the Hello World !
p.
First check the Hello World example in the Try It Online section, create a file named hello.is on your system, write the code and
run <b><code>ironscript hello.is</code></b> from your terminal. It's that easy, really. We do not have an REPL yet, we hope to have
implemented an REPL by version 1.3 .
h5.subtitle.is-4 Doing Bigger and Better Things
p.
than writing a Hello World, like writing this website ... Well, that's <b class="green-text text-darken-2">Coming Soon</b>.
section.section
.content.is-medium.has-text-centered
h2.title.is-3 Author
p.is-medium.
My name is <strong>Ganesh Prasad (GnsP)</strong> and you can know more about me at
<a href="https://gnsp.github.io">my Homepage</a>.