taradinoc
The good news is you don't need to install any C# development tools if you use the prepackaged binaries, since they're standalone executables.
ZILCH (Infocom's compiler) provided all the functions of MDL, _plus_ a bunch of new ones that manipulated data structures which were then used to generate assembly code for the Z-machine.
One of those new functions, ROUTINE, accepted code written in a domain-specific language resembling a stripped-down MDL, which was then translated into Z-machine instructions. But that domain-specific language isn't synonymous with ZIL: other functions that were inarguably part of ZIL, like OBJECT and SYNTAX, are not part of that domain-specific language.
IMO, the only reasonable definition of ZIL is "the language accepted by a ZIL compiler", which (depending on whether you look at ZILCH or ZILF) is either a superset of MDL or an overlapping set.
That's part of it, but it's also a value judgment for everyone else to make.
In many cases, the rest of us in society care enough about how those decisions are made that we've passed laws prohibiting businesses from rejecting customers for certain reasons.
For example, if your market research shows that allowing Jews into your event results in lower overall attendance, because too many of the other potential attendees are anti-Semites who refuse to go to an event that allows Jews, you still don't get to ban them. We've established that making those opportunities equally available to all religions, ethnicities, genders, races, etc. is more important than maximizing profit. Even when that discrimination isn't illegal, it's often frowned upon by the culture.
And one reason for that is that we distinguish between the business deciding you can't visit them, and you deciding you can't visit them. We expect businesses to be inclusive, even if that means more people choose to exclude themselves -- because this way, the people who are excluded at least get a choice.
>And if you think they made the wrong decision, feel free to tell them so or even to boycott it yourself, giving them a reason to consider other potential solutions.
I've got no reason to attend a Kubernetes conference anyway, but I have the same interest as any other member of society in ensuring that people get treated fairly.
But... would I let myself attend an industry conference that's also being attended by someone who voted for a politician whose opinions or policies are hostile to me?
Yes. Of course.
I'd also attend a conference that's being attended by someone who thinks I'm going to hell when I die. I'd even attend a conference where one of the speakers thinks that. Because I don't have to trust conference attendees or speakers with my life or health; I don't have to interact with them at all, and if I do, it'll be in a busy public place; and if they were the kind of person to go into a blind rage when they meet someone like me in public, they probably would've done it already and gotten caught.
A lot of people take that for granted based on anecdotes, but actual data is elusive.
Some things we should expect to see if this theory is correct:
* CS student gender ratios close to 50:50 at admission
* A relatively large change in CS student gender ratios between admission and graduation, compared to other majors
* A relatively high rate of "misbehavior" (e.g. sexual harassment) in CS programs and/or the tech industry, compared to other fields
From what I can tell, though, we don't observe any of those.
> If you want to talk about fields where men are driven out (and they do exist: primary school teaching and nursing come to mind)
The same questions could be raised about those: why are we so sure they're being "driven out" at the college level?
Here's a paper investigating the causes of gender imbalance among primary school teachers: https://etd.ohiolink.edu/!etd.send_file?accession=ysu1515846...
The men interviewed for the paper disagreed that discrimination, social barriers, stereotypes, or other forms of injustice play a role. ("I don’t feel that there is any injustice… men who want to teach, are able to. It’s not like we’re being held down.")
It also points out that a greater number of men than women choose to go into primary education during college, which is the opposite of what we'd expect if they were being driven out by professors and peers.
Not necessarily, you could also just find all that CS stuff interesting.
https://github.com/PDP-10/muddle/blob/master/mim/development...
It doesn't run on any available MDL implementation, because it's actually for MIM, an even more obscure and undocumented extension of MDL. ZILF implements some parts of MIM, but doesn't implement READ-TABLEs at all, and the format of the table implied by that code is different from what's documented for MDL.
Hmm... I guess I don't know everything quasiquoting is used for in Lisp, but in MDL and ZIL, segments don't really solve the problem that quasiquoting does when it comes to writing macros.
That is, I usually want to use macros to generate code according to a template:
<PRSI? ,FOO>
should become <==? ,PRSI ,FOO>
The way to write that macro is to call FORM to build the form: <DEFMAC PRSI? (X)
<FORM ==? ',PRSI .X>>
But if it's a complex block of code, and the blanks I want to fill in are deeply nested, the template quickly becomes unreadable, because every structure turns into a form, and every form turns into a call to FORM.This debate has been going on for decades. (See Photopia.)
I'm not sure what the purpose of things like <RETURN!-> and <ORB!-> is. It could have something to do with the way they implemented Z-machine opcodes as MDL atoms, i.e. <RETURN!-> forces it to use the MDL SUBR instead of the opcode? Maybe they moved the MDL atoms that collided with Z-machine opcodes to a separate OBLIST, and this was needed to access them from MDL code in the same file?
I never figured that part out, so when ZILF is generating code, it uses the same OBLISTs it used while interpreting and just looks things up by their PNAMEs.
SETG20 and DEFINE20 are used in "MDL-ZIL" files, where routines are defined with DEFINE instead of ROUTINE, global variables are created with SETG instead of GLOBAL, etc. Presumably that was a way to run the games in MDL during development to avoid recompiling them. SETG20 and DEFINE20 are aliases for the MDL versions of SETG and DEFINE.
<SETG X 0> ;FORM
(NORD BERT) ;LIST
[1 MONEY 2 SHOW] ;VECTOR
"Bracket-ish" ;STRING
{ what goes here? } ;TEMPLATE
Then you got your exciting brackets, where the first ! is mandatory but the second is optional: !<REST .FOO!> ;SEGMENT
![2 4 8 16 32 64!] ;UVECTOR
Then you got your hashtag brackets, which pop up in the corner of the TV screen reminding you that there's another way to CHTYPE: #FORM (+ 1 2) ;"same as <+ 1 2>"
And your hashtag voucher brackets, which are really just defective angle brackets you can exchange for a free hashtag: <> ;"evaluates to #FALSE ()"
Finally, you got your bogus brackets, things that look like they could be a new kind of exciting brackets, but when you look closely they're just prefix operators that tend to appear before brackets: '(OSCAR WILDE) ;"same as <QUOTE (OSCAR WILDE)>"
%<+ 1 2> ;"evaluate immediately"
%%<CRLF> ;"evaluate and discard result"
See also: https://github.com/taradinoc/mdl-docs/blob/master/docs/07-st... <DEFINE FOO () ...>
is equivalent to <SETG FOO <FUNCTION () ...>>
But EVAL will fall back to the LVAL if the atom doesn't have a GVAL. In other words: <A B C>
is equivalent to <APPLY <COND (<GASSIGNED? A> ,A)
(<ASSIGNED? A> .A)
(T <ERROR>)>
B
C>
https://github.com/taradinoc/mdl-docs/blob/master/docs/03-bu...https://github.com/taradinoc/mdl-docs/blob/master/docs/appen...
That is, it isn't just an English-like syntax for writers who are used to writing in complete sentences... it's a programming model based on concepts from narrative, technical writing, and linguistics, for writers who are using it to write narratives, describe technical systems, and manipulate text.
I7 integrates high-level domain concepts of interactive fiction into the language: scenes and continuity, rules and their exceptions, relationships between objects, templates for parsing and printing text.
MDL doesn't have quasiquoting, but it has "segments" that expanded while evaluating a structure (prefix a form with "!", and the result is spliced into the structure), and reader macros expanded while parsing source code (prefix a form with "%" and the result is inserted, or "%%" and it's discarded).
https://github.com/historicalsource/hitchhikersguide/blob/d7...
ZIL is basically a domain-specific language on top of MDL, the Lisp-like language that was used to write the original mainframe Zork. The developers went on to start Infocom and split Zork into three parts that were small enough to run on home computers, creating ZIL and the Z-machine in the process.
The source code for mainframe Zork is still available, but the subset of MDL implemented by ZILF isn't complete enough to play it. Matthew T. Russotto has written a MDL interpreter to do just that: http://www.ifarchive.org/indexes/if-archiveXprogrammingXmdlX...