« first day    last day (646 days later) » 

16:00
@Spevacus Would that work for software engineering?
I would say that helpful compiler error messages are 100% a good idea unless you're making a language only for yourself (even then, very useful)
Mmm... I don't really know. Their topicality rules are a bit difficult to understand.
I guess it depends how helpful you mean
@Spevacus as in what extra info you need to include, what else your compiler needs to look at, etc?
16:04
@user Well, here's a great Rust example, where the compiler recognized that the < was not being parsed as a comparison operator and even suggested alternative syntax as it interpreted what the programmer wanted to do: twitter.com/b0rk/status/954366146505052160?lang=en - In this instance, I'm curious if going to the lengths to support such advanced detection is really worth it as opposed to more summarized error messages with supplemental documentation like other
high-level languages like C# and Python do
@Spevacus usually people are lazy to read supplemental docs, like I was when I spent 2 hours trying to fix a gradle error then fixed it easily by reading the docs
so yes
@Spevacus great if correct, annoying if wrong
@Spevacus It's easier to build a compiler to give helpful errors out of the box than to add that kind of thing later. It requires a significantly different arcitecture
Agreed (to all of you), however, I'm still interested in whether this sort of question would be on-topic for the site.
There’s only one way to find out
16:07
0
Q: What are the advantages to placing functions in a separate namespace?

Silvio MayoloIn many modern languages, a function is just a specific kind of value that happens to be callable. However, some languages, even if they support first-class functions, assign functions to their own namespace separate from values. In Common Lisp, functions and values occupy different namespaces. A...

I guess you're right :D
though it might need to be slightly less vague
Hrm. I guess, to narrow it down, I would emphasize that the work involved in detecting the existing syntax a programmer presented and needing to interpret potential intent to provide accurate, high-value error messages and suggestions like Rust does would be... Non-trivial, and supporting that would take up significantly more time than not.
On our way to 100 questions
How do y’all have more rep than is possible?
16:12
Accepts and suggested edit approvals are not restricted by the reputation cap.
Bounties can also surpass it, but we haven't had any of those yet. Or, rather, we can't yet.
Ah
Well, I’m over the suggested edit approval rep level, so can’t get that :(
Wait really? You can edit at 500?
Oh right, beta
It'll be two days until anyone hits the next priv, tag wiki edit approval
Unless kaya approves a few answers
Speaking of which, I should mark an approval on my q…
Excited for 1250 in four days
That'll be tag synonyms
Tho the process is super annoying so we'll probably just need to get a mod/CM to make any changes meta decides on
I’m not used to using the acceptance checkmark bc I’m only really active in cgcc
16:17
That's generally how tag synonyms are made, even on stack overflow the normal process is too hard to really work at all
Tbf most design questions here shouldn't have accepted answers
and questions don't need accepted answers and IMO should not have them
Since that discourages future answering
0
Q: What are some practical examples of term-rewriting systems?

Ben KovitzI'm in the process of designing a simple domain-specific language and I think that a term-rewriting system may provide the simplest way to specify and implement it. However, I have only seen a few examples of term-rewriting systems, so I don't have much sense for the possibilities of how you can ...

Should and be synonyms?
Because someone is definitely going to make a dsl tag at some point even if we don't make it now
Yes, dsl -> domain specific language
Altho IMO it should be plural
We also need OOP as a syn
We'll need a CM/mod for this tho
16:34
OOP as a syn for DSL?
@Seggan What's SSA conversions?
0
Q: What is a GADT skolem?

Ben KovitzLong ago, I got an error message in Scala informing me that I had a GADT skolem. I googled but only found very abstract descriptions of GADT skolems, nothing with an example that illustrated in a realistic context why the concept is needed. I found a workaround to the error but never understood w...

Also, how did you manage to implement flow typing in only 2 lines?
I didnt
i implemented the assignment semantics (isAssignableFrom in Java terms)
@Seggan No, for , but I suppose all OOP langs are DSLs, where the domain is causing human misery
16:35
Ah
Well nullable types aren't as useful without flow typing
@user I don’t expect flow typing to be that much harder than say variable shadowing, you’d get it pretty much for free if you use SSA
@user but they still trump “any variable can be nullable”
I guess, but Options are much easier to implement in that case
@Seggan What's SSA?
Static single assignment form
where all variables are immutable and reassignments are new variables
Huh
In compiler design, static single assignment form (often abbreviated as SSA form or simply SSA) is a property of an intermediate representation (IR) that requires each variable to be assigned exactly once and defined before it is used. Existing variables in the original IR are split into versions, new variables typically indicated by the original name with a subscript in textbooks, so that every definition gets its own version. In SSA form, use-def chains are explicit and each contains a single element. One can expect to find SSA in a compiler for Fortran, C, C++, or Java (Android Runtime); whereas...
It improves the simplicity of some compiler optimizations
16:39
IR is usually SSA
Since it allows reordering
Ooh
Noooo wayyy I got Lifejacket!
The invite fellow experts bar is finally visible
@user nice
16:54
Is it possible to make a PL without an AST?
Depends on what you consider an AST
Actually not even that, of course it is
There's langs that are interpreted without any parsing at all
If you have single character tokens yes
Would a question like "What are the pros and cons of each type of operator notation (prefix/infix/postfix)?" be ok?
Or is that too simple?
@RydwolfPrograms How can that be?
@TheThonnu Looks good to me
16:55
@TheThonnu Could be too broad. What are you really asking?
@Ginger ?
But if it has to be asked, better ask it now.
Oh you meant Rydwolf
In the early stages of the site.
Ok, thanks
16:56
@user16217248 If the structure is simple enough that there's nothing to parse. E.g., for a stack based language, you could just go a character at a time
@user16217248 Some languages can just be interpreted one character at a time. Or some fixed number of characters at a time
Even if you do one word at a time that's not really parsing
just .split(' ')
You don't necessarily need to look at the overall structure or process it in any way. Just depends on the way the language is designed.
Languages like brainf?
Those too
And I've personally implemented languages way more complex than stack-based langs or brainfuck, but with something less complex than an AST, like a plain tree of tokens
@user dammit wrong reply
16:58
That sounds like a AST
How complex could such a language be? Could someone write a C compiler that parses one character at a time? I do not see how but maybe I'm wrong.
I remember there being a distinction between an AST and a parse tree
@user16217248 Technically yes, it would just be very annoying
@user16217248 With the exception of the preprocessor yes
I don't think you could do includes that way
0
Q: What are the pros and cons of each type of operator notation (prefix/postfix/infix)?

The ThonnuIn Prefix notation, the operator comes before the operands (e.g., +a b). In Postfix notation, the operator comes after the operands (e.g., a b+). In Infix notation, the operator comes in between the operands (e.g., a+b). Most practical languages use infix notation, but some esoteric languages u...

Do abstract syntax trees have nodes, which correspond to different groupings, and they have an enum that specifies which type of operator, keyword, etc it is? What is the difference between that and a parse tree?
17:01
That would be a good question to ask
AST vs. parse tree
Do you want to ask it or should I
There is this preexisting SO question: stackoverflow.com/questions/5026517/…
I've already started
Should it be asked even though it would be a cross-site dupe?
I think it'd be fine to
@user16217248 I think a parse tree is more tied to the original BNF
Suppose you have a grammar that looks like
S -> N "+" N | N "*" N
N -> (number)
A parse tree for 1 + 2 might look like
   S
 / | \
N  +  N
|     |
1     2
Whereas the AST would look like:
   Add
   /  \
Num     Num
 |       |
 1       2
The parse tree is more based on how you got there in the first place
The AST isn't as concerned with the exact text you parsed
In a parse tree would the elements be pointers to the text then?
For example, if you have an expression like (1)+2, the parse tree would include that, but the AST wouldn't necessarily include the parentheses
@user16217248 No not necessarily
17:11
@user16217248 That'd just be an implementation detail, not part of the criteria for what type of tree it is
Honestly not a huge difference
0
Q: What is the difference between an Abstract Syntax Tree and a Parse Tree?

user16217248Compiling and interpreting programming languages typically involves parsing text into a tree that represents the different groupings of syntactic elements. The hierarchy represents which syntactic elements a program has but in data structure form instead of string form. A very basic example would...

Given that how an expression was expanded corresponds pretty well with the structure of the expression
I don't think making that pros-cons makes sense
Often you'd use both
And it reduces the focus of the question
They are steps in the same process
17:14
Well not always
Though it's possible I guess to use only one
You can have one without the other
@RydwolfPrograms Changed
@RydwolfPrograms yeah same
Yeah so ASTs just store the raw operations, whereas parse trees store more the structure of the underlying text.
17:16
I learned the difference the hard way when using ANTLR
parse trees are hard to work with
my desugaring step is between parse tree and AST
Desugaring, also known as a low-carb diet
How hard is it to implement compiler optimizations? As in, make compilers smart enough to recognize patterns and optimize them? I'd imagine it'd be pretty hard.
Depends how far you want to go
I think if you use LLVM it does some optimizations for you
Tail-call optimization shouldn't be too hard to do
Strength reduction would be easy. If a * or / operation is encountered and a suitable operand is a power of 2, replace with a shift.
I wonder if you could make it extensible
Some easy way for people to write their own compiler plugins to match patterns and rewrite them
Although some optimizations can't be done simply by seeing if the structure of the code matches some pattern
17:27
In a language where more whitespace loosens operator precendence, how should I handle asymmetrical whitespace? E.g., 1 + 2 * 4 might mean (1 + 2) * 4, while 1 + 2 * 4 still means 1 + (2 * 4), but what about 1 + 2 * 4?
You have to do deeper analysis to see if a type is always used in one specific way, if a curried function is always called with all its arguments at once, etc.
One optimization gcc does is it replaces certain printf calls with puts
@RydwolfPrograms 1 + (2 * 4)
I does the maximum whitespace on either side
17:27
Because the 2 * 4 is farther away
so 1 + 2 * 4 is the same as 1 + 2 * 4
1 + 2 * 4 should be (1 + 2) * 4, similarly
I like ^^
@user Hmm...so what about 1 + 2 * 4?
@RydwolfPrograms (1 + 2) * (4)
maximum of whitespace on either side, so same as 1 + 2 * 4
17:28
@user Interesting
idk if what I'm suggesting is consistent tbh
@Bbrk24 An optimization that seems to be possible but I have never seen done would be replace printf with inline instructions that do the same conversions and output but skip the overhead of parsing the format string at runtime.
Isn't there a language dzaima made that does this? You could steal its rules, maybe
IMO 1 + 2 * 4 is ambiguous and would be treated identically to 1 + 2 * 4
Yeah that's a sensible way to treat it
17:30
Although I's (my? :p) rules might make more sense for like, simplicity's sake
@user ILanguage? Like, the one I’ve been talking about?
@RydwolfPrograms Those are exactly the same... at least to a C compiler
Is that the name?
5 mins ago, by Rydwolf Programs
In a language where more whitespace loosens operator precendence, how should I handle asymmetrical whitespace? E.g., 1 + 2 * 4 might mean (1 + 2) * 4, while 1 + 2 * 4 still means 1 + (2 * 4), but what about 1 + 2 * 4?
What are some of such languages?
Speaking of which, would questions about naming a new programming language be off-topic?
0
Q: How exactly does requiring a semicolon after `EndIf` and `EndWhile` make recovering from parsing errors easier?

FlatAssemblerIn my programming language, AEC, unlike in Ada or VHDL, there is no semicolon after the EndIf token. That is, you can put the semicolon ; after EndIf if you want to, but you do not have to. I often put it so that ClangFormat does not get confused when formatting the code written in my programming...

@user Huh, I guess I don't think about those distinctions. My (hand-rolled) parsers tend to output something that's technically a parse tree, but is a lot closer to the AST in terms of simplicity.
I’ve also heard the parse tree called a concrete syntax tree, to mirror the name of an AST
Interesting, how would that work out?
17:40
Just a different name for the same thing
@user The toy language I made would convert that into a { kind: FunctionCall, name: "+", arguments: [{ kind: Literal, value: 1 }, { kind: Literal, value: 2 }] }. Which tree would that be considered?
0
Q: Are questions about naming a programming language on-topic?

user16217248I am sure that asking a question such as 'What should I name my programming language' is going to be too broad and opinion-based. But if someone had a more specific question about naming a programming language such as 'Is too similar to any existing programming languages?' could such questions b...

Also we have two users now and I am Going to get them confused
user is the cool one and user is the boring one, easy
Who and who?
17:44
user
@user16217248 and @user
The one without numbers is the one we know from CGCC
@Bbrk24 Pretty sure we've got over a hundred users by now /s
@user16217248 Constant folding is pretty easy
Also, is the suggested edits queue constantly showing up as full for y’all when there is nothing in there?
No
It says 0 for me, but I'm maxed out for the day so that might affect it
@Seggan Yeah, me too. It shows the red circle but nothing there.
17:47
… why did someone downvote this
@user16217248 Tag wiki edits probably
You need 750 for those
Need Catija back to review those
@Catija I think we've got some tag wiki edits in the queues, would it be possible for you to go through those? Not sure how many there are
(we should get a few people able to review them in 31 hours)
@Seggan I didn't downvote it, but it's pretty bare-bones compared to the other answer. Some specifics and/or an example might help.
17:51
@RydwolfPrograms That's a meta tag
Well it was meant in the same sense as catalogue/comparison
Just very poorly worded
@Bbrk24 Don't ask me lol
The line gets very blurry
I'd call it an AST
@Seggan Same here
@Bbrk24 that’s be an AST I think
Advice: Don't use the colored dots to see what's in the queues
Just pin the review page and use a review script to refresh the view every minute or so
17:56
8 mins ago, by Seggan
Also, is the suggested edits queue constantly showing up as full for y’all when there is nothing in there?
I know I submitted a tag wiki edit so yes there’s at least one there
GRT can be configured not to open the new tasks in a tab and just act as a review page reloader
Remind me to install that when I get home
Too bad it doesn’t work on mobile
There are other userscripts I’d prefer more, like monospace improvement
Idea: a service that sends you a mobile notification when there’s something in the review queue
17:59
Right, time to work on that :P
But you’d need an app for that, no?
or a service to send people text messages
OOOOH
I can do that! (in theory)
Ginger I called it first
a lot of SMS services have email gateways
no, you called the notification one
I call this one
Ah they’re different
18:00
but yeah I could set up something to poll the review queue and send out text messages via the email gateway
it might be a bit slow tho
lemme do some tests
4
A: How can I send push notifications to iOS without writing my own application?

yinkouThis is not possible under iOS. You only can send push notifications to a specific (your own) app.

@RydwolfPrograms (If you're wondering how to do this, just comment out line 136)
You’d also be responsible for managing a list of phone numbers and then you have to deal with privacy laws
I'd be responsible for managing a list of emails
the email you give me is up to you
alright, for me there's about 30 seconds of lag for the SMS gateway
so if you're willing to 1. wait for 30 seconds and 2. give me your email, I can do this for you
not saying I'll ever do it, but it's possible in theory
Dude, this was 5 years ago. — yinkou Jul 6, 2017 at 7:39
18:12
man i wanna write an esolang that needs you to correctly conjugate/decline your identifiers
conlang?
or natlang, my conlangs are woefully underfeatured
unless...
like i have a handful of clongs that are developed enough to do relays with (i.e. able to translate large passages of text)
maybe i can use one of them
@bigyihsuan Somewhat related: in AppleScript, you can use 's:
TIFF image "my bitmap"'s 3rd row's 7th pixel
AppleScript is weird
(from Wikipedia)
You can write it as pixel 7 of row 3 of TIFF image "my bitmap" if you prefer
18:16
@DLosc 🙈
I get that making programming languages vaguely resemble natural languages can help a bit but turning them into English is too much
Inform 7 has entered the chat
aaaaaaaaaaaaaaaaaaa
Hand me the nembutal
"Hello Deductible" by "I.F. Author"

The story headline is "An Interactive Example".

The Living Room is a room. "A comfortably furnished living room."
The Kitchen is north of the Living Room.
The Front Door is south of the Living Room.
The Front Door is a door. The Front Door is closed and locked.

The insurance salesman is a man in the Living Room. The description is "An insurance salesman in a tacky polyester suit. He seems eager to speak to you." Understand "man" as the insurance salesman.
@user I never saw that…
0
Q: Representing parenthesis in an AST

0xLogNThis language is implemented in Rust using a lot of enums for things like expressions. Some of the planned validation rules involve checking how parenthesis are used -- where they're needed and are not, for example. This is currently done with an Expr::Parenthesized node. However, I want to be ab...

Oop down to 3 votes for today
18:42
Well the stats look alright
Especially this one :p
That's gonna slow down a lot though
Also why do we have only 80% answered? I barely see unanswered questions
Probably selection bias
The unanswered ones fall off the active page quickly
I've been actively checking out the unanswered tab
18:47
We have 11 unanswered questions
Yea I guess that tracks
come to think of it i've got a clong that has 24 pages of documentation
should be enough detail
would there
m op
bleh accidental typing
ignore :)
0
Q: How to distinguish custom operators from each other?

kaiserthe13thHow might one go about building a parser that can distinguish custom operators in prefix, infix or postfix positions. For example: # Hypothetical operator @postfix(Precedence.Not) let ~ = fn(a) = ... @infixleft(Precedence.Addition) let ~^ = fn(a, b) = ... @prefix(Precedence.Not) let ^ = fn(a) ...

19:03
Is a good tag name? Is that a term people understand or should it be spelled out and synonymized?
good, imo
I think simd is well known, more people know it by the name of "simd" than the full version
agreed, i don't even know the full
Single Instruction/Multi Data right
Which is too long for a tag name IMO
That's not 35 characters, is it?
19:05
No, but it's still very long
Similar question - for "k" should it just be k or k-framework?
@RydwolfPrograms Yeah, we could make it a synonym maybe but please not the actual name
(I'm coming across these in tag wiki excerpt suggestions)
The K language also exists so it's good to disambiguate
19:07
^
ok, folks.
@Catija can probably go. There’s only two questions with it and they use it for different things; one of them is already regardless.
19:11
^
For the array/list sense, we should probably use a clearer term
And for hardware vectorization we have
Is there a way to see the list of tags?
Yeah, I’d be fine with or even just expanding the existing array tag
Under questions
@mousetail /tags page
19:15
also should we have or ?
ast
I vote for the long form
with or without n?
@Seggan Typo yours or in original?
19:16
Without n
Also synomymize into please
I'm unsure about the Shouldn't all of our questions have multiple answers?
@mousetail (Note to CMs, this is a joke, please don't do that :p)
use for really bad language design
19:39
@RydwolfPrograms mine
@mousetail i say short
19:57
95 questions...can we hit 100 in two UTC days?
Ooh apparently even tho I'm user ID 5, I'm the first user on the site who's not a CM or dev (aside from WH Hack)
20:11
0
Q: What are the advantages of using Dependent Modal Types in a language?

Sofia RodriguesI was trying to read a paper called Modal Dependent Type Theory that implements a type that causes the context to "lock" but I don't know how it would be useful outside of formal proofs. What are the uses of modal types outside of formal proofs?

Put synonym requests on meta and someone will handle them. 🙂
@RydwolfPrograms 96, we're on a roll, I hope.
I've probably got one or two I could ask about trait-based langs
And I've been trying to figure out how to word one about Unicode identifiers
0
Q: Static or dynamic dispatch for parametric polymorphism

pxegerI read that, in GHC: Type classes are implemented using a type-directed implicit parameter-passing mechanism. Each constraint on a type is treated as a parameter containing a dictionary of the methods of the type class. The corresponding argument is implicitly inserted by the compiler using the ...

97
I try to monitor the CV and RV review queues, not much is happening, I think its because a lot of the members are already experienced Stack Exchange users.
20:20
I have a question I want to ask but I’m on 12% battery
If you're not using a review script, you'll never get a review
I got one on my phone earlier
@RydwolfPrograms I manually check the reviews. I don't use scripts for things like that. Everytime I visit the site I will click the button and check.
Yeah, that really reduces your odds of getting a task since those of us with scripts get them quicker
I created the k-framework tag and merged it.
20:22
Thanks!
0
Q: What Unicode character categories should be allowed in identifiers?

Rydwolf ProgramsWhen implementing Unicode identifiers, I'm never sure what characters should be allowed. For example, this is the list of categories: Control: C Letters: L Marks: M Numbers: N Punctuation: P Symbols: S Whitespace: Z Each of these have different subcategories. What's a sensible policy for what U...

@RydwolfPrograms This just means I don't have to feel guilty about not doing reviews
Wait if people are using scripts to do reviews isn't that cheating? CM suspend everyone with the review privileges.
20:38
no, the script is to notify for reviews
reviews are still done manually
@RydwolfPrograms false
ive had reviews even on cgcc where everyone uses the script
Is there a way to see the upvotes you got even after you hit the rep cap?
21:01
@RydwolfPrograms Do you have a link to the review script you use?
21:15
Also, we decided questions about the stdlib are on-topic, right?
0
Q: How should I implement a standard queue type?

Bbrk24As some examples of standard queue types: C++ has deque (queue is just a wrapper around it), which is typically implemented as a doubly-linked list of arrays. C# has Queue, which uses a resizable circular buffer. Swift doesn't officially have a queue type, but some standard library algorithms th...

21:36
0
Q: The Implementation of the Kind Type checker is really a good implementation of a fast type checker?

Sofia RodriguesThe project that I worked on for some months is Kind It's a dependently typed language that implements some type of "spartan type theory" with Type in Type. The type checker works by joining the source code of the Type checker with a HOAS representation of the code that it wants to type check som...

100 Questions! (This is day 1 of the site.)
The fact that it's post ID 418 means there's 318 answers, right? A 1:3 Q:A ratio is not bad at all
is:answer, gives 244 results.
right, some answers have been deleted. Still, that's like a 2:5 ratio
0
Q: There are good formal type theories that tries to make a better type checker for a C like language?

Sofia RodriguesI want to have some performance on my language but with more powerful types. At the beginning I thought a lot about just going straight forward with a Hindley-Milner and perform monomorfization but I have not reached a conclusion about what kind of type checker I need to have in order to make a l...

21:44
I wonder what the other IDs were taken by
Technical getting 100 questions by itself means nothing, because if you got 100 questions and all of those questions did not get any answers posted on them that will be a bad thing.
The 100th question poster is here.^
0
Q: What ways exist for handling string conversion?

Bbrk24For example: Java uses a toString() method, and calls that behind the scenes. If you don't implement one, you inherit it from the base class (Object). JavaScript uses the ToPrimitive abstract operation, which involves @@toPrimitive, "toString", and "valueOf". You can read the spcification here. ...

22:03
I'm trying to understand if HVM is really suitable for dependent type checkers. I'm not sure because Kind type checker is kinda incomplete in my view. It enables a lot of unsoundness, Holes are not shared between functions even though you can declare then in relevant places, you don't have unification for lambdas that reduce to the same thing, not even occur check it has.
It's kinda strange ~ I used to work on this language but more on DX way than performance :S and I'm almost sure I did not contributed a lot for the language itself.
Meanwhile in Swift, multiple people have independently proven the type system TC in different ways
@SofiaRodrigues Also, completeness and soundness are goals that are at odds with each other; you cannot have both
Yeah I know ~ but it's more than that I guess @Bbrk24, It contains a lot of problems due to the nature of the optimizations of the type checker.
@mousetail unanswered also includes questions with an answer without upvotes
*unaccepted answer
Sometimes I just think if it's really necessary to be the fastest type checker for a "theorem prover" if it sacrifices so many features lol. It doesnt even have a coverage checker, termination checker and other cool things. When I tried to implement a coverage checker for Kind, my best implementation that was a simple implementation using HOAS and another techniques that I got from "Warning for Pattern matching" . Cool features slows down the type checker a lot
22:09
@Bbrk24 no it's a question without a positive voted answer
That's the bare minimum for a question to be considered answered
0
Q: How to compile exceptions?

Luiz FelipeWhat are the most common ways of compiling code of a language with first-class support for exceptions, such as C++? Panics in Rust, which have similar behavior, shouldn't be different. From my experience, "local jumps" such as continue or break doesn't seem too hard. The problem with exception ap...

@lyxal It says "with no upvoted or accepted answers"
Well that's not solely no accepted answers either
22:28
Right. I meant that correction as "an unaccepted answer without upvotes"
just adding that one word
0
Q: List Sorting Method - In Place or New Object?

lyxalSay I have a list class which has a sort method. class List { // the standard library list class for a language // ... method sort {/*...*/} // ... } Should this method, when called, sort the list in-place or return a new sorted list? I don't know which is more efficient and which i...

@Bbrk24 usually * indicates a correction by replacement rather than an addition or an addendum
fair
22:44
Mm so close to a repcap
I've hit repcap and vote limit twice and I'm actually a little upset about the latter
Never hit it once here the rep one
0
Q: What are the pros and cons of automatic currying?

naffetSIn several functional languages like Haskell and OCaml, functions are automatically curried. But most programming languages, even many functional languages, like Elixir, don't do this. What are the advantages and disadvantages of this approach to functions?


« first day    last day (646 days later) »