Hi, I haven’t posted much here in quite some time.
So, is this blog abandoned? I wouldn’t say so. I intend to post more ~ATH content here at some point. I have other projects and obligations, which is why I’ve been not doing as much with it recently (”recently”: understatement of the year), but if anyone has any questions about drocta ~ATH, or would like to request that I do something in particular with it, I think I’ll probably respond within a reasonable amount of time.
Right now though I thought I would link to two blogs that I think you are likely to appreciate if you like this blog.
The first is @sbahjsic http://sbahjsic.tumblr.com/ which is for a programming language and assorted connected software meant to be, well, sbahjsic . like sweet bro and h---- jeff. (Warning though, that blog has some javascript alerts when you view it. Also it has moving parts which might be bad if you get nauseous easily or something? idk.) The blog theme there is a work of art to behold. This is likely to appeal because it is also a homestuck related programming language, and also it is great.
The second is @tilde-he which is where I post most of my non ~ATH related tumblr posts. This is somewhat likely to maybe appeal because it is by the same person as this blog (me).
Again, if you have any questions or comments about my version of ~ATH, or, really, any version that you can point out, feel free to send them, and I’ll try to respond within a reasonable amount of time.
Alright, cheers
Hey, I haven't posted in a while because I have been doing other stuff. Meanwhile some people followed me. Thank you.
OK, so news: I got calling functions working. it works and stuff.
huh, apparently tumblr changed the interface since I last posted? I think I preferred the previous version? w/e.
But what I haven't added yet is the syntax to define and create a new function. Right now I just have some functions hard-coded in as elements of a dictionary. If you want to try it out just modify the funCodes dictionary. (yes, I am terrible at naming variables.)
Yeah so, I an not totally sure what I am going to have for the syntax for defining a function, but the syntax for calling a function is
FUNCTION_NAME [IN1,IN2]OUT;
(which takes the object consisting of IN1 and IN2 and puts it through the function, where it would be stored as the variable ARGS, and when it finishes the last thing .DIE() was called with is what gets put into OUT)
and then theres
FUNCTION_NAME IN[OUT1,OUT2];
which kinda does the opposite.
takes in IN, and splits the out into OUT1 and OUT2
(this version (the FUNCTION IN[OUT,OUT]; one, as opposed to the FUNCTION[IN,IN]OUT; one) isn't actually implemented yet, but mostly I will just have to copy paste it from the other one and change a few numbers, but I have to homework now so I'll do that later.)
to clarify, the same functions can be used either way. You can say LIME [LIME,LIME]LIME; or you can say LIME LIME[LIME,LIME]; and they would both call the function LIME, but they would do slightly different things.
hooray for stuff.
anyway I am going to go uh, push that new version.
How should the syntax for defining a function be? Should it just be each file can be imported as a function?
My ~ATH keeps crashing whenever I run a non-computer exploding code, or if I press enter. Why is this?
Based on the username which recently followed this blog at the same time as I received this ask (which I won't say what it was because you asked this on anon, and haven't received permission), I'd guess that you may be running a different version of ~ATH than the one I document here :P
Unfortunately, I don't have a specification for the version you have.
If you have such a specification, or the executable for it, I'd be happy to take a look if you could send it to me, haha.
If on the off chance you are using the version I document here, then presumably you have a syntax error or something in your code?
"computationalalchemist answered: You could use Prolog-style lists for split."
I'm not totally sure what you mean, but my best guess as to what you meant is probably pretty similar to how I making it.
I implemented it and I think it works, I need to double check though.
With what I have now when I use
split [THIS,THIS,THIS,THIS,THIS,THIS,NULL]COUNTER; ~ATH(COUNTER){ print "bananas"; BIFURCATE COUNTER[JUNK,COUNTER]; }EXECUTE(print "ok";); print "whee!";
it yields
bananas bananas bananas bananas bananas bananas ok whee!
Which seems to make sense to me, and also, fits with how lisp lists work, and apparently also prolog lists.
also where it says split it will also accept bifurcate. they are actually treated as the same command.
import statements aren't fully implemented yet though.
I think I will put this version on github pretty soon.
Thank you for the advice.
I've realized that recently, my tutorial posts have been too much code and not enough explanation. That was a mistake on my part, so I am going to go back now and give better explanations.
Also, I have started to make a table of contents page.
I figured that if someone wanted to read the tutorial after a significant part of it were finished, that they might have trouble, because it would kind of be in reverse order.
So TABLE OF CONTENTS AHOY!
Yeah.
So uh, any suggested changes to the format of the TOC page?
Why cant I mark this as a post that can be answered? I can let people photo reply, but once it goes in drafts I can't let people answer this question? Or is it too long?
What is with this interface?
Ok, if you tried running a script with the interpreter, it might not have run properly. The part of the code that handles what part of the code is executed next is buggy. It is in the process of being fixed. Also, if python gives you a syntax error, it is probably because you are using a different version of python. Change raw_input to input And change print stuff to print(stuff) I will post an introduction to the syntax soon.
PRINT2 prints a string object as a string. If you give it something that is not a string object it will probably crash, or output the empty string.
Now, to import user defined functions use
importf filename as FUNCTIONNAME;
Why didn't I put this up earlier?
because I have other projects and because sometimes I am busy/lazy.
OK!
So to make a function to import, you pretty much make a ~ATH file like normal, except the object passed into the function is put into the variable ARGS, and when you want to pass the output object of the function out, you have it as an argument to the DIE method.
It can either be when saying THIS.DIE(RETURNOBJ); or ANYOTHERVARIABLE.DIE(RETURNOBJ);
The object your killing doesn't have to be the one tied to the life of the function or anything.
Oh I should clarify, the THIS variable/object will refer to the current function, not the file that called it.
It CAN be returned, and will be dead when you exit the function.
PROGRESS!
FUNCTIONS WORK.
LESS SPAGHETTI CODE.
although this starts to make me wonder if maybe this strays too far from what ~ATH is like in comic,
but w/e.
Do you know of any ~ATH implementations or dialects besides yours and mine?
Actually, yes kinda. Sorta anyway. There is a compiler of sorts that is intended to be ~ATH based, though I don't think it matched canon all that well.
It did have one feature which I found interesting though. It had a command which would create a variable thing which was truthy iff there was a process currently running with a given name, so you could have in a ~ATH loop something that loops until another program is closed. It was a pretty cool feature, but the syntax for it was odd. The author misinterpreted the panel where Sollux deletes the different virus folders he had, so the command was called rm -rf or something like that.
It also had a command to run an executable (by file name) iirc.(which allowed for easy implementation of the robin hood and friar tuck programs)
It also was an editor of sorts, but it had a small window that I don't think was resizeable. It worked (iirc) by doing some string replacement to turn the program into a c(++?) program, which it then compiled.
I'll try to find it so I can link it. I don't think it represents ~ATH all that accurately, but the using another program as one of the objects seemed like a neat and probably accurate feature (given the mobius double reacharound)
tl;dr yes
Heyho, I now red alot of your sources and i started to understand your interpretation of ~ATH. You do alot of things with the bifurcate command.. I actually thought that bifrucate JUST splits the programm in different colors like here : "bifurcate THIS[THIS(red), THIS(blue)]; " I think that you can actually split your script into N colors while N > 0. like this: bifrucate THIS[THIS(COLOR(0),THIS(COLOR(1),THIS(COLOR(2),THIS(COLOR(3),THIS(COLOR(4),THIS(COLOR(5),THIS(COLOR(6)] and so on.
Yes. I do use BIFURCATE often.
Personally, I doubt that one could say
BIFURCATE A[D,B,C]; (for some names and colors for a b c and d),
because of the "Bi" part of the word "bifurcate", meaning two. (or in some cases, "both")
Further, I would defend my use of it to BIFURCATE things other than THIS with http://mspaintadventures.com/?viewmap=6 which, for the start of act 5, says
BIFURCATE ACT_5[red(ACT_1), blue(ACT_2)];
which seems to indicate that things other than THIS can be BIFURCATED.
To split something into more than 2 parts, I would just bifurcate it multiple times. *
I don't know what the etiquette is for whether I should click publish or answer privately, so I am going to pick one and hope for the best.
okay, this might be a liiittle specific, and more HS oriented, but still. can you power a First Guardian using ~ATH? and if so, what are some ways?
This is a slightly off of the usual topic of this blog, which is more about a language which I made up and is based on and named after the language in the comic, and attempts to be as close to the comic while still being possible to implement and use, (the language in the comic is not particularly well documented), but I’ll answer it to the best of my abilities.
I’m not sure what you mean by “power”.
“Can I write a first guardian character that has some of their behavior be based on ~ATH in some ways?” : I don’t see any reason why not. If you can do ectobiology with a puppet and a cueball, why not with a computer running a program?
“Can I make a first guardian character who is a first guardian because of the continual execution of a ~ATH script?” : While you can of course write whatever you want, I’m not sure that this is consistent with what is said in acts 1-7 (I have chosen to disregard everything after act 7) about first guardians. It seems like an entity either is or is not a first guardian, and that this fact is established at the time of that entity’s creation. It seems to me like what happens with first guardians is: using ectobiology, the genetic code from some players’ subconscious-or-whatever is combined with some other source(s), and the result is a first guardian.
Oh, I suppose if you just mean “an entity has the powers of a first guardian as a result of a ~ATH script”, then, uh, I guess that doesn’t contradict anything. How would I depict such a script? Well, I don’t know that anything that we’ve seen of the language gives any particularly clear direction for what such a script would look like. If you want it to just have the keywords we’ve seen, possibly re-interpreted to mean something different, I guess one idea could be to like, say bifurcate an existing first guardian into parts with names that seem relevant, and also whatever entity is to have the abilities of a first guardian, and then like, un-bifurcate (unbifurcation is not something shown in the comic, but is something I’ve added to my language, in order to make it usable) the other entity, but with some component of the first guardian mixed in somehow? Though if you did that, you would probably want to justify why, if ~ATH can do that that easily, why it doesn’t happen all the time.
There is very little in terms of rules that the story gives for how ~ATH behaves. If you want to have a ~ATH script “power” a first guardian, just make up some stuff. If you want to depict the actual script, then look at all the pages of the comic that depict code from it, see what it says they do, and just make something up that seems to aesthetically fit.
The language that I have defined (”drocta ~ath”) does not provide any means of doing this, because the language I designed was designed to technically be usable, while also resembling the language in the comic.
I suppose that, as all first guardians get their power from the green sun, and the green sun was created by the circumstantially simultaneous destruction of, uh, either universes A and B, or specifically of A2 and B1, not sure which, and this was in some ways tied to the Möbius Double Reacharoud virus, you could argue that all first guardians get their powers from, something somewhat connected to a ~ATH script.
Why can’t I add tags to an answer to an ask?
News and tutorials on drocta ~ATH by drocta. interpreter here A brief summary of how to write code in the language (but also see the table of contents)
38 posts