Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon.

Pages: 1-4041-8081-120121-160161-

Symta v0.2

Name: Anonymous 2012-12-08 11:36

Ok. I put out the second release of Symta: http://sym.at.ua/load

Also the SymCraft/LispCraft sources are under 1100 lines (http://sym.at.ua/photo), including UI and a simple AI.

Name: Anonymous 2012-12-08 11:36

Damn it, Ahmed! I love you!

Let's bomb ourselves together.

Name: Anonymous 2012-12-08 11:41

http://sym.at.ua uses green color scheme, because green is the color of Islam.

Name: Anonymous 2012-12-08 11:42

Shiitchan reimplementation, ``in symta.''

``Dominus vobiscum et cum spiritu tuo!

Sim salabim!''

Name: Anonymous 2012-12-08 11:45

what is the reason to rewrite warcraft?

Name: Anonymous 2012-12-08 12:04

>>5
To test the language.

Name: Anonymous 2012-12-08 12:08

Did you write all these C wrappers yourself?

Name: Anonymous 2012-12-08 12:37

>>7
Such is the way of Lisp.

Name: Anonymous 2012-12-08 12:42

Symta is the only good language.

Name: Anonymous 2012-12-08 12:42

А ви таки не одэссит случаем?

Name: Anonymous 2012-12-08 12:44

>>9
Any sufficiently complicated C or Fortran program contains an ad hoc, informally- specified, bug-ridden, slow implementation of half of Symta.

Name: Anonymous 2012-12-08 12:46

>>11
Any sufficiently complicated program written ``in Lisp'' contains an ad hoc, informally- specified, bug-ridden, slow implementation of half of Haskell.

Name: Anonymous 2012-12-08 12:57

Haskell is an a priori, formally-specified, bug-free, fast implementation of fucking shit.

Name: Anonymous 2012-12-08 13:27

>>10
just one of ucoz.ru domains.

Name: Anonymous 2012-12-08 13:28

>>10
Salam!

Name: Anonymous 2012-12-08 14:01

fuck yeah symta!

Name: Anonymous 2012-12-08 14:10

lol zymta. does it even support infinite sets? do you still live with your mom? are you still unemployed?

Name: Anonymous 2012-12-08 14:13

lol zymta. does it even support infinite sets? do you still live with your mom? are you still unemployed?

Let's not get personal now, Mr. Goldberg!

Name: Anonymous 2012-12-08 14:13

symcraft file is corrupted.

Name: Anonymous 2012-12-08 14:30

Symcraft file is corrupted by jewry

Name: Anonymous 2012-12-08 14:35

JEWS DID SYMCRAFT

Name: Anonymous 2012-12-08 15:01

Every day until Shlomo restores his foreskin:
Kabbalah is a set of esoteric teachings meant to explain the relationship between an unchanging, eternal and mysterious Ein Sof (no end) and the mortal and finite universe (his creation).

Name: Anonymous 2012-12-08 15:01

Good news everyone!

Name: Anonymous 2012-12-08 15:11

op is a fag

Name: Anonymous 2012-12-08 15:18

>>24
/polecat kebabs/

Name: Anonymous 2012-12-08 15:20

Thanks, OP.

Now where's the documentation!

Name: Anonymous 2012-12-08 15:24

>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA
>>1 DOCUMENT SYMTA

Name: Anonymous 2012-12-08 15:24

( ͡° ͜ʖ ͡°)

Name: Anonymous 2012-12-08 15:48

Symta bump to counter the jewface necrobumping.

Name: Anonymous 2012-12-08 15:51

Free site builder - uCoz

Name: Anonymous 2012-12-08 16:05

>>27
Should I rewrite SICP, but using Symta as underlying language?

Name: Anonymous 2012-12-08 16:05

>>30
anything better?

Name: Anonymous 2012-12-08 16:07

>>17
what are sets? yes, mom hates me. jew wont give me work.

Name: Anonymous 2012-12-08 16:08

>>19
no. it's not.

Name: Anonymous 2012-12-08 17:21

a gameplay video, cause people said it's fake:
http://www.youtube.com/watch?v=-k8jkeFfnl0

Name: Anonymous 2012-12-08 17:30

Nikika Sadkov
Shalom, ``comrade.''

Name: Anonymous 2012-12-08 17:35

>>35
how old are you? why does your mom hate you?

Name: Anonymous 2012-12-08 17:41

hey op, i just wanted to say that i love you <3 no homo

Name: Anonymous 2012-12-08 17:52

Ahmed on a mac? WTF?

Name: Anonymous 2012-12-08 18:54

whoa, so he really is muslim?

Name: Anonymous 2012-12-08 19:01

(fun capitalize (o) (string-capitalize (mk-sym o)))
Also what's with your 24pt programming font?

Name: Anonymous 2012-12-08 19:15

>>31
Yes, yes, YES!

Name: Anonymous 2012-12-08 19:27

Thank you for the update. I will give it a look.

Name: Anonymous 2012-12-08 21:32

goldie, is it you? i remember you on iichan's /sci/ (the world is small)
well, at least programing some weird things is better than pseudoscience propaganda
document your xynta and move from ucoz to github

Name: Anonymous 2012-12-08 23:27

Name: FFP 2012-12-09 1:17

i will have op's babies.

WYPMP

Name: Anonymous 2012-12-09 1:25

>>46
sexist cunt and racist shithead. match made in hell.

Name: FFP 2012-12-09 1:29

>>47
go back to sleep, cretin-kun.

WYPMP

Name: Anonymous 2012-12-09 3:17

>>44
I've never done any "pseudoscience propaganda". I was just asking you to show me "infinity set", which you failed to do and banned me.

Name: Anonymous 2012-12-09 3:18

>>37
how old are you?
27

why does your mom hate you?
Because I don't believe in her Jewish God.

Name: Anonymous 2012-12-09 3:53

I thought you were poor and you're using a Macintosh.

Name: Anonymous 2012-12-09 4:04

>>49
We've told you that nobody can do that. It's an imaginary concept like three or seven.

Name: Anonymous 2012-12-09 4:12

>>52
prove infinity DOESNT exist.

Name: Anonymous 2012-12-09 4:22

>>49
It's not even that useful and you could be cleaner without it.

Name: Anonymous 2012-12-09 4:50

>>52
We've told you that nobody can do that.
They why do you put this shit into schoolbooks and university exams?

It's an imaginary concept
what is "imaginary"?

like three or seven.
symbols "3" and "7" look pretty real.

>>54
It is required to get university degree and any programming job.

Name: Anonymous 2012-12-09 4:52

>>53
no idea what is "infinity", but at /sci/ they also talk a lot about acceleration, continuous function and differential equations, but fail to explain these concept.

Name: Anonymous 2012-12-09 5:30

>>55
Infinite sets have applications that are useful in our models of physics. They are purely a hypothetical construct. Nobody says, "this thing here is an infinite set" only, "we apply this imaginary idea here and now we can make useful and accurate predictions about how X will behave". Three and seven are not real things but a human construct to reason real things in life.

Name: Anonymous 2012-12-09 5:35

>>55
Just understand the system from the axioms and it's fine, even though you have a couple of faulty ones. Understanding models is easy, even if you see them as being wrong.

Name: Anonymous 2012-12-09 6:20

>>58
Axiom I: God created universe.
Axiom II: You're a fag.
Axiom III: God hates fags.

Theorem I: God hates you.

Name: Anonymous 2012-12-09 6:23

>>57
Abrahamic religions have applications that are useful in brainwashing the society. They are purely a hypothetical construct. Nobody says, "this thing here is a God" only, "we apply this imaginary idea here and now we are pious". Dog and cat are not real things but a human construct to reason real things in life.

Name: Anonymous 2012-12-09 6:48

>>55
The symbol ∞ looks pretty real too.

Name: Anonymous 2012-12-09 8:03

>>59
Lemma I: God created a fag.
Theorem II: God created something he hates.
your theory seems to inconsistent.

Name: Anonymous 2012-12-09 9:51

>>62
God is hatred, so there must be something to hate. That is why he hates you.

>>61
but has no meaning, while "7" maps to the number of letters in the word "meaning"

Name: Anonymous 2012-12-09 10:03

>>63
∞ looks like the number of dicks in your anus.

Name: Anonymous 2012-12-09 10:11

how about negative numbers? they don't 'map' something like the quantity of letters in a word
were negative numbers invented by jews?

Name: Anonymous 2012-12-09 10:22

>>62
You forgot about
Axiom Zero (aka Golden Rule): God works in inconceivable ways.

Name: Anonymous 2012-12-09 10:46

>>62
Lemma I: Programmers created /g/.
Theorem II: Programmers hate /g/.
your an illogical piece of shit.

Name: Anonymous 2012-12-09 11:05

if sets don't exist, why does symta implement them?
check & m8, symtard.

Name: Anonymous 2012-12-09 11:29

>>65
Yes, there was a lot of opposition to it. The jews want to bring mysticism to math.

Name: Anonymous 2012-12-09 11:43

>>67
``programmers'' are not being one consciousness while god is implied to be one.

Name: Anonymous 2012-12-09 11:45

>>70
wait, ihbt.
``programmers'' and ``god'' are different entities
so your induction by analogy is invalid

Name: Anonymous 2012-12-09 12:05

>>1
The site appears to be down.

Name: Anonymous 2012-12-09 12:22

>>72
Fucking Shlomo took it down!

Name: Anonymous 2012-12-09 13:08

You have been visited by the Spooky Skeleton! Repost this 3 times in the next 2 minutes seconds or you will be visited by a Spooky Skeleton tonight! 95% of people will not post this..... and they will become skeleton.....


█████░░░░░░░░░░░█████
███░░░░░░░░░░░░░░░███
██░░░░░░░░░░░░░░░░░██
██░░▓▓░░░░░░░░░▓▓░░██
██░░▓▓▓▓░░░░░▓▓▓▓░░██
██░░░░░░░░▓░░░░░░░░██
███░░░░░░▓▓▓░░░░░░███
█████░░░░░░░░░░░█████
█████░░▓▓▓▓▓▓▓░░█████
█████░░▓▓▓▓▓▓▓░░█████
██████░░░░░░░░░██████
███████░░░░░░░███████

Name: Anonymous 2012-12-09 13:15

>>51
Macs are not very popular in Russia.  Some high-income hipsters use them, but that's it.

Name: Anonymous 2012-12-09 15:14

>>75
only gays use them

Name: Anonymous 2012-12-09 16:13

>>65
They map to your debt.

Name: Anonymous 2012-12-09 16:16

>>51
Because Linux was too complex for me and Windows is just a mess.

Name: Anonymous 2012-12-09 17:24

`
█████░░░░░░░░░░░█████
███░░░░░░░░░░░░░░░███
██░░░░░░░░░░░░░░░░░██
██░░▓▓░░░░░░░░░▓▓░░██
██░░▓▓▓▓░░░░░▓▓▓▓░░██
██░░░░░░░░▓░░░░░░░░██
███░░░░░░▓▓▓░░░░░░███
█████░░░░░░░░░░░█████
█████░░▓▓▓▓▓▓▓░░█████
█████░░▓▓▓▓▓▓▓░░█████
██████░░░░░░░░░██████
███████░░░░░░░███████

Name: Anonymous 2012-12-10 2:16

hey op, i thought you didnt like sicp.

Name: Anonymous 2012-12-10 3:16

hey op, i thought you boner

Name: Anonymous 2012-12-10 5:12

>>80
That is why I use CL.

Name: Anonymous 2012-12-10 17:25

u were banned for a good reason op. stop your math sacrilege.

Name: Anonymous 2012-12-10 17:27

And how many lines would it take to write the C equivalent of your buggy, incomplete Warcraft II ?

Name: Anonymous 2012-12-10 18:16

>>84
Probably quite a few less. Lisp is known to be rather terse.

Name: Anonymous 2012-12-10 18:24

>>85
I meant more. More C lines.

Name: Anonymous 2012-12-10 19:27

U.owner≥≤ThisPlayer
Get a job, Ahmed!

Name: Anonymous 2012-12-11 14:11

>>84
I once wrote random map generator for Warcraft II and it took 1600 lines (http://sym.at.ua/load/wc2mapgen/1-1-0-10)

Name: Anonymous 2012-12-11 14:16

Dear Ahmed,

Symta can go a long way if you provide tutorials and a more complete documentation.

Name: Anonymous 2012-12-11 14:59

>>7
Everyone uses C in the end.

Let's face it, while other systems may be construed as being perfect, C is the only thing that really works.

Name: Anonymous 2012-12-11 15:08

>>90
ADA motherfucker, do you speak it?

Name: Anonymous 2012-12-11 17:43

>>89
I'll try to rewrite Arc tutorial for this purpose...


[This is a brief tutorial on Symta.  It's intended for readers with
some Lisp experience.]


Symta programs consist of expressions.  The simplest expressions are
things like numbers and strings, which evaluate to themselves.

-> 25
25
-> “foo”
“foo”
-> ~123  // negative number
~123

Note the unicode “” (U+201C and U+201D) quotes, which can be easily
nested. For convenience we also support usual "" ASCII-quotes.

Several expressions enclosed within parentheses are also an expression.
These are called lists.  When a list is evaluated, the elements are
evaluated from left to right, and the value of the first (presumably
a function) is passed the values of the rest.  Whatever it returns
is returned as the value of the expression.

-> `+` 1 2
3

Here's what just happened.  First `+`, 1, and 2 were evaluated,
returning the plus function, 1, and 2 respectively.  1 and 2 were
then passed to the plus function, which returned 3, which was
returned as the value of the whole expression.  `` quotes allow
us to use any string (even ()-braces) as a function/variable name.

(Macros introduce a twist, because they transform lists before
they're evaluated.  We'll get to them later.)

Since expression and evaluation are both defined recursively,
programs can be as complex as you want:

-> `+` (`+` 1 2) (`+` 3 (`+` 4 5))
15

Putting the `+` before the numbers looks odd when you're used to
writing "1 + 2," but Symta, in contrast to other Lisps, supports
infix sugar, which automatically transforms expressions into
their prefix form:

-> 1+2+3+4+5
15

This turns out to be a convenient feature, and doesn't impede
generating code that much, which is a common thing to do in Lisp.

Also, in contrast to other Lisp dialects, Symta doesn't discern
between strings and symbols. We've already seen one: `+` which is
just an unquoted “+” string, being treated as code. Unquoted strings
don't evaluate to themselves the way numbers and “”-strings do.
They return whatever value they've been assigned.

If we give Foo the value 13, it will return 13 when evaluated:

-> Foo = 13
13
-> Foo
13

Note that all variables must start from uppercase letter, which
functions can start from any non-uppercase character. Such
notation improves readability and frees non-uppercase symbols
for special use.

You can turn off evaluation by putting the \ slash character
before an expression.  So \Foo returns the symbol Foo.

-> \Foo
Foo


If you quote a list, you get back the list itself. 

-> (`+` 1 2)
3
-> \(`+` 1 2)
(`+` 1 2)

-> `\\` 1+2   // note how we escape \ slash to use it inside string
(`+` 1 2)

The first expression returns the number 3.  The second, because it
was quoted, returns a list consisting of the symbol + and the numbers
1 and 2. The third expression show how to escape infix expressions.

You can build up lists with [] and @
-> [1 2]
(1 2)

-> [\f @\(a b)]
(f a b)

-> [1 @[2 3] 4 @[5 6] 7]
(1 2 3 4 5 6 7)

-> l 1 @[2 3] 4 @[5 6] 7
(1 2 3 4 5 6 7)

-> `[]` (1 @[2 3] 4 @[5 6] 7)
(1 2 3 4 5 6 7)

As you can see operator `@` does an interpolation inside `[]`,
while `l` is used when you want to avoid braces. Last line shows
that `[]` is in fact a "macro", which doesn't eval it's arguments,
but transforms them into a number of calls to low-level `conc`,
`pre`, `suf` and functions (similar to CONS from Common Lisp),
which would be too error prone to use directly.


While by default interpolating operator `@` doesn't change the
original list, with `!` it can be made easily used to do so:

-> Yoba = \(a b)
(a b)
-> [\f @Yoba]
(f a b)
-> Yoba
(a b)

-> [\f @!Yoba]
(f a b)
-> Yoba
(f a b)

In general, any variable prefixed by `!` takes value of resulting
expression. If you are used to C/C++, you can easily simulate `++`
and `--`, with `!`:

-> Yoba = 123
123
-> !Yoba+1
124
-> Yoba
124
-> !!Yoba+1
124
-> Yoba
125

While `!!` too sets Yoba to the new value, it returns previous one,
acting like postfix `++` from C/C++.


The empty list is represented by the symbol ø, which is defined
to evaluate to itself. For the same purpose we can use just ()

You can take lists apart with lhd, ltl, rhd and ltl functions, which
return the head element and tailing elements relatively to the beginning
and to the end of a list respectively:

-> lhd \(a b c)
a
-> ltl \(a b c)
(b c)
-> rhd \(a b c)
c
-> rtl \(a b c)
(a b)

Another operator `,` picks element by it's numeric position in list:
-> [1 2 3],0
1
-> [1 2 3],(~1) // when index is negative, takes from the end
3

function `t` and `d` take and drop number of elements from a list:
-> t 3 [1 2 3 4 5 6 7]
(1 2 3)
-> t ~3 [1 2 3 4 5 6 7]
(5 6 7)
-> d 3 [1 2 3 4 5 6 7]
(4 5 6 7)
-> d ~3 [1 2 3 4 5 6 7]
(1 2 3 4)

Generic Symta lists must guarantee reasonably fast O(log2(N)) random
access and concatenation. This may not apply to lists, optimized for
specific purpose like arrays or hash-tables.

Name: Anonymous 2012-12-11 17:46

>>90
Because crappy Unix is written in C/C++, so we are forced to work with it.

Name: Anonymous 2012-12-11 17:47

>>90 is true.

Name: Anonymous 2012-12-11 18:08

>>92

1+2+3+4+5 -> (+ 1 (+ 2 (+ 3 (+ 4 5)))) ?

[1 2 3],4 is just an error?

Name: Anonymous 2012-12-11 18:12

>>95
Thanks.
[1 2 3],4 is just nil

Name: Anonymous 2012-12-11 18:13

>>95

-> `\\` 1+2+3+4+5
(`+` (`+` (`+` (`+` 1 2) 3) 4) 5)

Name: Anonymous 2012-12-11 20:37

symta confirmed for legitimate.

Name: Anonymous 2012-12-11 21:06

I have to get 99get in the Symta thread.

Name: Anonymous 2012-12-11 21:21

>>98
Only if you consider legitimate as being ugly as Haskell.

Name: Anonymous 2012-12-11 21:25

this thread is symtarded.

Name: Anonymous 2012-12-11 22:18

Can Symta do this?
http://cur.lv/buva

Name: Anonymous 2012-12-11 22:41

cur.lv
What the fuck, nigger anus?

Name: Anonymous 2012-12-11 22:45

>>103
Short URL service.

Name: Anonymous 2012-12-11 23:27

>>104
Yeah keep spreading lies kike fagshit

Name: Anonymous 2012-12-11 23:48

>>102-105
I guess not.
Symta confirmed for less useful than Haskell.

Name: Anonymous 2012-12-12 5:30

Can Symta do this?
http://cul.vr/buva

Name: Anonymous 2012-12-12 6:59

>>107
Pow, right in the Symta!

Name: Anonymous 2012-12-12 8:13

>>108
Right in the Culver.

Name: Anonymous 2012-12-12 8:22

>>102
That redirects to
http://systemofwinning.weebly.com/
hi my name is ahmed and i like playing casinos games before many years ago and testing many casinos and i created many systems and strategies and really some of its work well and some not work but finally and after hard work i succeeded to make some strategies to make u earn more u lose and be happy to make money as 100$ every day ,now i will learn u one of my strategies and remember i give u it 100% free nothing to pay me as many sites who scam u and take yr money k now lets start explain   :-
first my system is about playing roulette u must know it . its as a game of casino and it is be in any casino online k but our system is working  well in this casino

Name: Anonymous 2012-12-12 9:51

>>102,107
You're not Ahmed, you avaricious kike.

Name: Anonymous 2012-12-12 10:02

>>110
hi my name is ahmed
IHBT

Name: Anonymous 2012-12-12 12:35

>>110
Lies! I was expecting some Ahmed, but instead I just got a pastebin full of dead dog!

Name: Anonymous 2012-12-13 11:12

>>92

Like Common Lisp assignment, Symta's `=` is not just for variables,
but can reach inside structures.  So you can use it to modify
associative lists or array indices:

-> = X:ø = (X.abc.def = 123) = X
((abc ((def 123))))

-> = X:[1 2 3] = (X,1 = 123) = X

Note that `=` is non-destructive, because it creates a new list on
each use, instead of modifying underlaying structure.

Lists are useful in exploratory programming because they're so
flexible.  You don't have to commit in advance to exactly what a
list represents.  For example, you can use a list of two numbers
to represent a point on a plane.  Some would think it more proper
to define a point object with two fields, x and y.  But if you use
lists to represent points, then when you expand your program to
deal with n dimensions, all you have to do is make the new code
default to zero for missing coordinates, and any remaining planar
code will continue to work.

Or if you decide to expand in another direction and allow partially
evaluated points, you can start using symbols representing variables
as components of points, and once again, all the existing code will
continue to work.

In exploratory programming, it's as important to avoid premature
specification as premature optimization.

The most exciting thing lists can represent is code.  The lists you
build with [] and \() are the same things programs are made out of.
This means you can write programs that write programs. The usual
way to do this is with something called a macro.  We'll get to those
later.  First, functions.

We've already seen some functions: `+`, lhd, ltl, and t.  You can
define new ones with `=`, which takes a symbol to use as the name,
a list of expressions representing the parameters, and then zero or
more `=` prefixed expressions called the body.  When the function
is called, those expressions will be evaluated in order with the
symbols in the body temporarily set ("bound") to the corresponding
parameters. Whatever the last expression returns will be returned as
the value of the call.

Here's a function that takes two numbers and returns their average:

-> average X Y = (X+Y)/2
$(fn Name:average Adr:#x1002DB0EEB)
-> average 2 4
3

The body of the function consists of one expression, "= (X+Y)/2".
It's common for functions to consist of one expression; in purely
functional code (code with no side-effects) they always do.

Notice that without `=`, `average X Y` would be just a function call.

What's the strange-looking object returned as the value after defintion
expression?  That's what a function looks like.  In Symta, as in most
Lisps, functions are a data type, just like numbers or strings.

As the literal representation of a string is a series of substrings
surrounded by double quotes, the literal representation of a function
is a list enclose inside `<>` braces.  So you could represent an
unnamed (anonymous) function to return the average of two numbers as:

-> <X Y = (X+Y)/2>
$(fn Name:r Adr:#x1002E4432B)

There's nothing semantically special about named functions as there
is in some other languages.  All `average X Y = (X+Y)/2` just assigns
<X Y = (X+Y)/2> to the symbol `average`.

And of course you can use a literal function wherever you could use
a symbol whose value is one, e.g.

-> <X Y = (X+Y)/2> 2 4
3

This expression has three elements, <X Y = (X+Y)/2>, which
yields a function that returns averages, and the numbers 2 and 4.
So when you evaluate all three expressions and pass the values of
the second and third to the value of the first, you pass 2 and 4
to a function that returns averages, and the result is 3.

Careful reader should note, that we omit parentheses around top-level
expressions. This notation has it tradeoffs, because now we have to
explicitly call any function, which takes no arguments. We use `c`
function for this:

-> <= 1 + 2>
$(fn Name:r Adr:#x100311C1BB)
-> c <= 1 + 2>
3
-> c <X = 1 + 2 + X> 4
7

As you can see, `c` can also call a function, which does take arguments.
Basically, `c` is analogous to funcall in Common Lisp.

There's one thing you can't do with functions that you can do with
data types like symbols and strings: you can't print them out in a
way that could be read back in.  The reason is that the function
could be a closure; displaying closures is a tricky problem.

In Symta, functions can also parse its arguments, akin to BNF. So
we can destructure list with them or just do pattern matching:

-> <[X Y] = (X+Y)/2> [2 4]
3
-> <[X Y] = (X+Y)/2> [2 4 6]
ø
-> <[X:even? Y] = (X+Y)/2> [2 4]
3
-> <[X:even? Y] = (X+Y)/2> [3 4]
ø

Note how <[X Y] = (X+Y)/2> returns ø (nil or false), when argument
doesn't match pattern. Many would consider such default unsafe, but
it greatly reduces code size. [X:even? Y] matches only pairs with
even first element: `even?` is just a predicate function. Symta's
predicates are usual functions, but have semantics of returning their
arguments, when it matches condition, or ø. For convenience predicate
names end with `?`. `X:even?` binds result of `even?` to X, or
returns ø, when `even?` returns ø.

The operator `:` can also be used for establishing temporary
variables, when used after `=`:

-> <X Y = Z:X+Y = Z/2> 2 4
3
-> = X:2 = X+X*2
6
-> = X:3 = Y:4 = sqrt X^2 + Y^2
5.0

operator `^` does exponentiation.

So far we've only had things printed out implicity as a result of
evaluating them.  The standard way to print things out in the middle
of evaluation is with `p` or `say`. The difference is that `p` does
pretty printing and returns it's argument, while `say` returns ø.
`p` is useful for debugging, as you can easily insert `p` between
function calls:

-> <X Y = (X+Y),p/2> 2 4
6
3

-> average X Y = say “my arguments were: $X $Y” = (X+Y)/2
$(fn Name:average Adr:#x1004DCA31B)
-> average 100 200
my arguments were: 100 200
150

For the first time we used `,` operator in it's other role - applying
function to an argument:
-> 3,<X=X*2>,<X=X/5>
6/5

The standard conditional operator is {}. It acts both as if and
cond/switch statement:
-> {odd? 1 = \a; \b}
a
-> {odd? 2 = \a; \b}
b
-> yoba A B = {A≤B = “A<B”
              ;A≥B = “A>B”
              ; √  = “A=B”}
$(fn Name:yoba Adr:#x10033CA54B)
-> yoba 7 4
`A>B`
-> yoba 2 4
`A<B`

When `=` is missing it {} just return the first true value:
-> {even? 3; odd? 7; 123}
7
-> {even? 3; odd? 8; 123}
123

Name: Anonymous 2012-12-13 11:13

>>114
Returning true means returning anything except ø. ø is
conventionally used to represent falsity as well as the empty list.
The symbol √ (which like ø evaluates to itself) is often used to
represent truth, but any value other than ø would serve just as
well.

-> (odd? 1)

-> (odd? 2)
ø

If the √ case is missing it defaults to nil.

-> {odd? 2 = \a}
ø

Just like <>, you can use {} with multiples `=`:

-> {odd? 3 = say “hi!” = say “3 is odd” = “bye”}
hi!
3 is odd
bye

Besides {}, we also have `a` and `v` macros, which stand for logical
and and or. They are intended to use in pipes:

-> {odd? 3 |a 3≥0 = “3 is odd and positive”}
3 is odd and positive
-> {odd? ~3 |a ~3≥0 = “3 is odd and positive”}
ø
-> {odd? ~3 |v ~3≥0 = “~3 is either odd or positive”}
3 is either odd or positive

Here `|` is a pipe, which takes argument 3 to the left and calls
`a` with it, like `a 3≥0 (odd? 3)`. `a` is just a macro, expanding
into {3≥0 = odd? 3}. Later we will review pipes and macros in detail.

The negation operator is called `n`.  Here's a function to return
the length of a list:

-> mylen Xs = {n Xs = 0; 1+(mylen (ltl Xs))}
$(fn Name:mylen Adr:#x100455EADB)

If the list is ø the function will immediately return 0.  Otherwise
it returns 1 more than the length of the left tail of the list.

-> mylen ø
0
-> mylen \(a b)
2

I called it mylen because there's already a function called len for
this. You're welcome to redefine Symta's functions, but redefining
len this way will break code that depended on it.

The standard comparison operator is ≥≤, which returns √ if its
arguments are identical or, if strings, have the same characters.

-> 123 ≥≤ 123

-> \foo ≥≤ \foo

-> = X:[\foo 123] = X ≥≤ X

-> [\foo 123] ≥≤ [\foo 123]


There is also ptrEq function, which compares objects by their
pointers:

-> = X:[\foo 123] = X ≥≤ X

-> ptrEq [\foo 123] [\foo 123]
ø

If you want to test whether something is one of several alternatives,
you could say {X≥≤Y; X≥≤Z; ...}, but that would be a little verbose.
We use our function pattern matching for this:
-> = X:\b = X,<\a;\b;\c>


-> translate \apple=\mela; \onion=\cipolla; X=\che?
$(fn Name:translate Adr:#x100A79691B)
-> translate \onion
cipolla
-> translate \syzygy
che?

Yes. Function `translate` has several cases, and each case has its
own body.

Symta has a few generating and iterating utilities. To generate a
sequence of numbers, use `rng`
-> rng 10
(0 1 2 3 4 5 6 7 8 9)

-> rng 7 20
(7 8 9 10 11 12 13 14 15 16 17 18 19)

-> rng 7 3 20 // uses step 3
(7 10 13 16 19 22 25 28 31 34 37 40 43)

To iterate through the elements of a list, use `e`.
-> rng 10 | e <X = say “$X ” nl:ø>
0 1 2 3 4 5 6 7 8 9 ø

That was another example of using `|` and also and example of
passing to `say` the keyword `nl`, which forbids say to print
newlines. As always operators `|` translates `rng 10 | e F`
into `e F (rng 10)`. Alternatively you can write `e F :: rng 10`

-> e <X = say “$X ” nl:ø> :: rng 10
0 1 2 3 4 5 6 7 8 9 ø

To filter elements from list, use `k` (keep) and `s` (skip). `k`
removes element for which it's predicate returns ø, `s` does the
opposite:

-> rng 7 20 | k odd?
(7 9 11 13 15 17 19)

-> rng 7 20 | s odd?
(8 10 12 14 16 18)

To continue iterating while some condition is true, use while.

-> = X:10 = while X≥5 (= !X-1 = say X nl:ø)
98765ø

There's also a more general for-operator that's similar to the C
for operator and tends to be rarely used in practice, and a simple
repeat operator `times` for doing something n times:

-> times 5 say “la ” nl:ø
la la la la la ø

The `m` (map) function takes a function and a list and returns the
result of applying the function to successive elements.

-> m <X+X+10> [1 2 3]
(11 12 13)

Actually `m` can take any number of sequences, and keeps going till
the shortest runs out:

-> m `+` \(1 2 3 4) \(100 200 300)
(101 202 303)

Since functions of one or twow argument are so often used in Lisp
programs, Symta has a special notation for them.  `... ? ...` is an
abbreviation for <X = ... X ...>, where X stands for a uniq symbol.
So our first map example could have been written

-> m ?+10 [1 2 3]
(11 12 13)

Here `?+10` produces expression equivalent to <X+X+10>. Beside ?,
we can have ?? and ???:
-> (?+??)/??? 2 4 2  // cal average of 2 and 4
3

We can compose functions by using `?`. I.e. `?,bar,foo` is equivalent
to <X = foo (bar X)>. Composed functions are convenient as arguments.

-> k ?,lhd,odd? \((1 2) (4 5) (7 9))
((1 2) (7 9))

We can also easily negate a function:

-> k ?,odd?,n \(1 2 3 4 5)
(2 4)

Name: Anonymous 2012-12-13 11:16

Hope Paul Graham wont kill me for stealing and modifying his tutorial. I'm just too lazy to make my own.

Name: Anonymous 2012-12-13 11:18

Ahmed is documenting Symta!

I LOVE YOU AHMED! PLEASE POST MORE!

Name: Anonymous 2012-12-13 11:21

I'd try Symta but I'm too lazy

Name: Anonymous 2012-12-13 11:43

It would be nice to have a single non-latin symbol for each of these common functions.

Name: Anonymous 2012-12-13 13:44

>>119
Well, these one-letter functions do consume namespace, but most one-letter variables are uppercase anyway. Good idea would be forbidding redefining them. On the other hand, Emacs makes most unicode symbols look terrible and other editors don't support unicode input at all.

I already use ≤≥, because <> are used as lambda, and still consider using usual eq/lt/gt.. instead.

Name: Anonymous 2012-12-13 13:54

And how is symta better than the alternatives?

Name: Anonymous 2012-12-13 13:55

This site is dedicated to Symta - new Lisp-like language with succinct syntax.
succinct syntax

I don't think you know what succinct means, Symta guy.

Name: Anonymous 2012-12-13 13:55

>>121
It's cuter.

Name: Anonymous 2012-12-13 14:00

>>120
Ah yes, I forgot about that. I personally like to use uppercase letters for variables I'm going to iterate over. Like X for a list and x for elements in the list.

Name: Anonymous 2012-12-13 14:22

your modified tutorial is pretty incomprehensible. i don't know much lisp though.

Name: Anonymous 2012-12-13 14:30

>>121
There are alternatives for Symta?

Name: Anonymous 2012-12-13 15:29

>>125
Sorry, I'm terrible at writing anything or communicating any information to others. That is why I'm still unemployed at my 30 years.

>>122>>121
Symta:

<[X@Xs]=[@Xs,r X]>


C/C++:

char * reverse(const char * in, char * out, size_t out_len){
    out[out_len - 1] = 0;
    int i = 0;
    while(!(out[out_len - 1 - i] = in_str[i]))
        ++i;
    return &(out[out_len - 1 - i]);
}


Symta:

get FileName |c:[T:@4.utf8 L:@4.ul D:@L.y @Xs] [[T D] @Xs,r]


C/C++:

#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <string.h>

typedef struct chunk {
  uint8_t Tag[5];
  uint32_t Len;
  uint8_t *Data;
  struct chunk *Next;
} chunk;

chunk *loadChunks(char *FileName) {
  int I, L;
  uint8_t *D, *P, *E;
  chunk *C=0, *T, *N;
  FILE *F = fopen(FileName, "r");
  fseek(F, 0, SEEK_END);
  L = ftell(F);
  D = P = (uint8_t *)malloc(L);
  E = P+L;
  fseek(F, 0, SEEK_SET);
  fread(D, 1, L, F);
  fclose(F);

  while (P < E) {
    T = (chunk *)malloc(sizeof(chunk));
    memcpy(T->Tag, P, 4);
    T->Tag[4] = 0;
    P += 4;
    T->Len = *(uint32_t *)P;
    P += 4;
    T->Data = (uint8_t *)malloc(T->Len);
    memcpy(T->Data, P, T->Len);
    P += T->Len;
    T->Next = C;
    C = T;
  }

  for (T = 0; C; C = N) {
    N = C->Next;
    C->Next = T;
    T = C;
  }

  free(D);
  return T;
}

Name: Anonymous 2012-12-13 15:57

I can't get symta to compile easily and I'm too lazy to go check what the issue is.

Name: Anonymous 2012-12-13 16:18

>>128
Yeah. It's hard to compile any Lisp code.

Name: Anonymous 2012-12-13 17:05

>>127
you said you were 27.

Name: Anonymous 2012-12-13 17:13

>>130
Anyway, I'm older than you, boy.

Name: Anonymous 2012-12-13 17:28

>>131
im a girl :~) you silly goy~~

Name: Anonymous 2012-12-13 17:28

>>132
* guy

Name: Anonymous 2012-12-13 17:30

>>132
transgender girl is still a boy.

Name: Anonymous 2012-12-13 17:30

>>133

**girl

Name: Anonymous 2012-12-13 17:30

>>134
born girl is still a girl.

Name: Anonymous 2012-12-13 17:31

the mythical female-programmer

Name: Anonymous 2012-12-13 17:34

btw im a girl

Name: Anonymous 2012-12-13 17:34

>>137
Erika exists, and I have the PROOF.

Name: Anonymous 2012-12-13 17:35

>>139
prove it.

Name: Anonymous 2012-12-13 17:51

Erika exists, you may know her under the pseudonym of ``Leah''.

Name: Anonymous 2012-12-13 17:55

>>141
prove it.

Name: Anonymous 2012-12-13 17:56

>>139
Of course He exists.

Name: Anonymous 2012-12-13 17:57

I'm doing a new random map generator, so I rewrote simplex noise function from JS...

Symta:

noise X Y Z
= dot:<G X Y Z = G,0*X + G,1*Y + G,2*Z>
= mix:<A B T = (1.0-T)*A + T*B>
= fade:<T = T*T*T*(T*(T*6.0-15.0)+10.0)>
= FX:X,floor = FY:Y,floor = FZ:Z,floor // Find unit grid cell containing point
= !X-FX = !Y-FY = !Z-FZ // Get relative xyz coordinates of point within that cell
// Wrap the integer cells at 255 (smaller integer period can be introduced here)
= and !FX 255 = and !FY 255 = and !FZ 255
// Calculate a set of eight hashed gradient indices
= GI000: mod Perm,(FX+Perm,(FY+Perm,(FZ))) 12
= GI001: mod Perm,(FX+Perm,(FY+Perm,(FZ+1))) 12
= GI010: mod Perm,(FX+Perm,(FY+1+Perm,(FZ))) 12
= GI011: mod Perm,(FX+Perm,(FY+1+Perm,(FZ+1))) 12
= GI100: mod Perm,(FX+1+Perm,(FY+Perm,(FZ))) 12
= GI101: mod Perm,(FX+1+Perm,(FY+Perm,(FZ+1))) 12
= GI110: mod Perm,(FX+1+Perm,(FY+1+Perm,(FZ))) 12
= GI111: mod Perm,(FX+1+Perm,(FY+1+Perm,(FZ+1))) 12
// Calculate noise contributions from each of the eight corners
= N000: dot Grad3,GI000 X   Y   Z
= N100: dot Grad3,GI100 X-1 Y   Z
= N010: dot Grad3,GI010 X   Y-1 Z
= N110: dot Grad3,GI110 X-1 Y-1 Z
= N001: dot Grad3,GI001 X   Y   Z-1
= N101: dot Grad3,GI101 X-1 Y   Z-1
= N011: dot Grad3,GI011 X   Y-1 Z-1
= N111: dot Grad3,GI111 X-1 Y-1 Z-1
// Compute the fade curve value for each of x, y, z
= U:X,fade = V:Y,fade = W:Z,fade
// Interpolate along x the contributions from each of the corners
= NX00: mix N000 N100 U
= NX01: mix N001 N101 U
= NX10: mix N010 N110 U
= NX11: mix N011 N111 U
// Interpolate the four results along y
= NXY0: mix NX00 NX10 V
= NXY1: mix NX01 NX11 V
// Interpolate the two last results along z
= NXYZ: mix NXY0 NXY1 W
= NXYZ+0.5


JavaScript:

ClassicalNoise.prototype.dot = function(g, x, y, z) {
    return g[0]*x + g[1]*y + g[2]*z;
};

ClassicalNoise.prototype.mix = function(a, b, t) {
    return (1.0-t)*a + t*b;
};

ClassicalNoise.prototype.fade = function(t) {
    return t*t*t*(t*(t*6.0-15.0)+10.0);
};

  // Classic Perlin noise, 3D version
ClassicalNoise.prototype.noise = function(x, y, z) {
  // Find unit grid cell containing point
  var X = Math.floor(x);
  var Y = Math.floor(y);
  var Z = Math.floor(z);

  // Get relative xyz coordinates of point within that cell
  x = x - X;
  y = y - Y;
  z = z - Z;

  // Wrap the integer cells at 255 (smaller integer period can be introduced here)
  X = X & 255;
  Y = Y & 255;
  Z = Z & 255;

  // Calculate a set of eight hashed gradient indices
  var gi000 = this.perm[X+this.perm[Y+this.perm[Z]]] % 12;
  var gi001 = this.perm[X+this.perm[Y+this.perm[Z+1]]] % 12;
  var gi010 = this.perm[X+this.perm[Y+1+this.perm[Z]]] % 12;
  var gi011 = this.perm[X+this.perm[Y+1+this.perm[Z+1]]] % 12;
  var gi100 = this.perm[X+1+this.perm[Y+this.perm[Z]]] % 12;
  var gi101 = this.perm[X+1+this.perm[Y+this.perm[Z+1]]] % 12;
  var gi110 = this.perm[X+1+this.perm[Y+1+this.perm[Z]]] % 12;
  var gi111 = this.perm[X+1+this.perm[Y+1+this.perm[Z+1]]] % 12;

  // The gradients of each corner are now:
  // g000 = grad3[gi000];
  // g001 = grad3[gi001];
  // g010 = grad3[gi010];
  // g011 = grad3[gi011];
  // g100 = grad3[gi100];
  // g101 = grad3[gi101];
  // g110 = grad3[gi110];
  // g111 = grad3[gi111];
  // Calculate noise contributions from each of the eight corners
  var n000= this.dot(this.grad3[gi000], x, y, z);
  var n100= this.dot(this.grad3[gi100], x-1, y, z);
  var n010= this.dot(this.grad3[gi010], x, y-1, z);
  var n110= this.dot(this.grad3[gi110], x-1, y-1, z);
  var n001= this.dot(this.grad3[gi001], x, y, z-1);
  var n101= this.dot(this.grad3[gi101], x-1, y, z-1);
  var n011= this.dot(this.grad3[gi011], x, y-1, z-1);
  var n111= this.dot(this.grad3[gi111], x-1, y-1, z-1);
  // Compute the fade curve value for each of x, y, z
  var u = this.fade(x);
  var v = this.fade(y);
  var w = this.fade(z);
   // Interpolate along x the contributions from each of the corners
  var nx00 = this.mix(n000, n100, u);
  var nx01 = this.mix(n001, n101, u);
  var nx10 = this.mix(n010, n110, u);
  var nx11 = this.mix(n011, n111, u);
  // Interpolate the four results along y
  var nxy0 = this.mix(nx00, nx10, v);
  var nxy1 = this.mix(nx01, nx11, v);
  // Interpolate the two last results along z
  var nxyz = this.mix(nxy0, nxy1, w);

  return nxyz;
};

Name: Anonymous 2012-12-13 17:59

>>142
Erika = ``Leah''[1]

[1] Gerald Jay Sussman. Terrible! Gossips. pp 420. February 2007.

Name: Anonymous 2012-12-13 18:41

>>144
I wish I had your work ethic.

Name: Anonymous 2012-12-13 18:58

>>146
I've no work ethic.

Name: Anonymous 2012-12-13 19:02

>>147
Let's bomb ourselves for good, Ahmed.

Name: Anonymous 2012-12-13 19:44

symta confirmed for imaginary

Name: Anonymous 2012-12-13 19:45

>>149
This is as real as it gets, Shlomo.

Name: Anonymous 2012-12-13 19:46

>>150
symta is fake, its all a lie. the code doesnt compile,.

Name: Anonymous 2012-12-13 19:48

symta confirmed for goyim conspiracy. an attempt to con the gullible.

Name: Anonymous 2012-12-13 19:54

>>151-152
Shalom!

Name: Anonymous 2012-12-13 19:54

>>152
The kike is right, Symta compiler where?

Name: Anonymous 2012-12-13 19:59

czech um

Name: Anonymous 2012-12-13 20:13

>>150,152-155
Go away.

Name: Anonymous 2012-12-13 20:19

>>156
Pprrrrpffffrrppfff!

Name: Anonymous 2012-12-13 20:21

>>157
NO THANK YOU

Name: Anonymous 2012-12-14 2:53

So.
Has someone tried Symta?

Name: Anonymous 2012-12-14 3:59

I heard it only runs on emacs? WTF man? Build a proper interpreter, it's not that hard!

Name: Anonymous 2012-12-14 5:13

>>160
It doesn't require Emacs but it also doesn't have a standalone interpreter, because it's implemented in Common Lisp.

Name: Anonymous 2012-12-14 6:59

>>161
We should write an optimizing native code compiler for common lisp in symta, and then use it to compile the symta interpreter and then write a symta native code compiler by transforming symta to common lisp.

Name: Anonymous 2012-12-14 7:43

Name: FFP 2012-12-14 10:13

>>163
i have a crush on symta guy ^_^

WYPMP

Name: Anonymous 2012-12-14 11:36

>>159
I would if I got it to run!

Name: Anonymous 2012-12-14 11:49

symta confirmed for hoax.

Name: Anonymous 2012-12-14 12:03

>>164
If you're gonna shitpost at least add some programming-related feet to your name.

See tdavis.

Name: Anonymous 2012-12-14 12:20

>>163
I'm sorry but I'm too stupid to compile it still!

Name: Anonymous 2012-12-14 12:52

>>168
Hope someday I will make usual Windows executable out of it. But not before I do custom JIT-compiler. But that would require finishing low level DSL part of Symta, to implement runtime, because I dispise C/C++.

Something like `main ArgC:si ArgV:##u1 = printf “Hello, World!”` would do.

Name: Anonymous 2012-12-14 20:14

>>164
Name: FFP : 2012-12-14 10:13

>>163
i have a crush on symta guy ^_^

WYPMP


>bully faggotic feminized western wretches
>want to reproduce with Ahmed the manly racist

That actually makes sense. If you're a troll, your caricature is quite accurate.

Name: FFP 2012-12-14 20:48

what?

WYPMP

Name: FFP 2012-12-14 20:49

lel

WYPMP

Name: Anonymous 2012-12-14 22:47

>>170
>LEEEEEEEEEEEEEEEELLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
E/G/IN MEAMMMMMMMMMMMMMMMMMMM QUOTES /G/ROSKI
* le me installing gentoo *

Name: Anonymous 2012-12-15 5:34

>>173
>LEEEEEEEEEEEEEEEEELLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL
>U LIEK MY MEMS
>HERE SOME MORE EGIN POSTS

Name: FFP 2012-12-15 7:11

>>173
lol

Sent from my WYPMP

Name: Anonymous 2012-12-15 7:34

I definitely don't want pussy, having looked up the definition

Name: Anonymous 2012-12-15 12:57

pussy is the best there is they say
though i've never seen one myself シ

Name: Anonymous 2012-12-16 20:38

It's hard to take Symta seriously when the source code is not hosted on GitHub. Ahmed, please fix this.

Name: Anonymous 2012-12-16 20:40

>>178
he won't.

Name: Anonymous 2012-12-16 20:41

github was founded by jews

Name: Anonymous 2012-12-16 21:00

>>180
mazel tov!

Name: Anonymous 2012-12-17 3:40

>>178
I often find it hard to take a project seriously if the code is hosted on the social site Github.

Name: Anonymous 2012-12-17 4:15

>>182
So you don't measure projects by how well they've achieved their mission statement? I bet you also believe that all things associated with jews exist for the purpose of promoting jewish interest, Ahmed.

Name: Anonymous 2012-12-23 4:41

Why does Ahmed smell so bad?

This coming from guy who likes smell of FFP!

Name: Anonymous 2013-02-26 23:27

hi sorry to bump but your website is down?

Name: Anonymous 2013-02-26 23:54

>>185
yeah, the jews false flagged it like 9/11

Name: Anonymous 2013-08-17 22:56

bump

Name: Anonymous 2013-08-31 20:42


'm told that in the Southern hemisphere cyclones are Low pressure and go anticlockwise, the opposite being true for anticyclones in the SH, and the reverse in the Northern hemisphere. In some text on the internet it says that you can tell by looking at the cyclone if you are in the Northern hemisphere. How does that work?

Don't change these.
Name: Email:
Entire Thread Thread List