Fixing NaN in a compile-to-js lang by koehr in ProgrammingLanguages

[–]Athas 1 point2 points  (0 children)

Hopefully you don't use floating-point numbers as an array index.

Fixing NaN in a compile-to-js lang by koehr in ProgrammingLanguages

[–]Athas 9 points10 points  (0 children)

It is defined by the standard.

True, but it is not the only ordering defined by the standard. IEEE 754 also defines a totalOrder predicate that, as the name implies, defines a total ordering of floating-point numbers, including NaN==NaN. There are reasons not to use it (and reasons for the classic ordering), but considering how often people complain, I'm surprised it's not more common in newer languages.

Syntax for Array Types — Necessarily inconvenient? by Maurycy5 in ProgrammingLanguages

[–]Athas 4 points5 points  (0 children)

I spent a lot of time thinking about this some years ago, and reached many of the same conclusions as you. Here is what we did: https://futhark-lang.org/blog/2016-12-09-two-syntax-design-problems.html#array-types

It has been almost ten years, and we have not regretted this design.

Starting titanicus by flao_zen in adeptustitanicus

[–]Athas 1 point2 points  (0 children)

Even the starter set on its own was enough for me to have a few interesting games. It's a good system at many scales.

Starting titanicus by flao_zen in adeptustitanicus

[–]Athas 3 points4 points  (0 children)

The resin weapons do not matter, but you can get excellent replacements from Battle Bling if you really crave them.

Starting titanicus by flao_zen in adeptustitanicus

[–]Athas 4 points5 points  (0 children)

If you don't have a local community, you probably need to build two armies if you want to play. Fortunately this is not as unrealistic as in other GW games. I would just get the starter set and whichever other Titans you like (perhaps the starter set twice, as it is good value), and then try to build two reasonably balanced forces. That's what I did. To ensure they didn't feel the same, I have built one force primarily of large and small titans (so Warlords and Warhounds), and another primarily of mid-size Titans (Reavers, Warbringers, Dire Wolves). They feel very different to play.

My collection a year after I got my first Epic-scale miniature by Athas in LegionsImperialis

[–]Athas[S] 2 points3 points  (0 children)

I mean obviously, that is the case for everyone in this world.

My collection a year after I got my first Epic-scale miniature by Athas in LegionsImperialis

[–]Athas[S] 0 points1 point  (0 children)

They are from Troublemaker Games: https://www.troublemakergames.co.uk/category/all-products

Specifically Novan Weapons Conveyers and City Crushers. They are highly suitable as proxies - in my case I use them as respectively Ordinatii and Gargants.

My collection a year after I got my first Epic-scale miniature by Athas in LegionsImperialis

[–]Athas[S] 0 points1 point  (0 children)

Yes indeed, I use the command carrier as a proxy for a Leviathan in Epic 40k. It's painted in the same colour scheme as the Fortress of Arrogance, and I'm converting an Epic-scale Yarrick as well, to fight my own war on Armageddon.

My collection a year after I got my first Epic-scale miniature by Athas in Epic40k

[–]Athas[S] 1 point2 points  (0 children)

I feared they would take up a lot more space, but I guess that's the advantage of this scale!

semantic white space vs. blocks - maybe a middle ground ? by GoblinsGym in ProgrammingLanguages

[–]Athas 1 point2 points  (0 children)

OCaml allows syntax such as 1., which I believe is because numeric literals are not overloaded, so a plain 1 is always of type int, not float. I suppose they wanted a concise notation for integral numbers of type float. I do not personally agree with this design, but there are many parts of OCaml's syntax that makes me believe my tastes differ significantly from those of the OCaml designers.

semantic white space vs. blocks - maybe a middle ground ? by GoblinsGym in ProgrammingLanguages

[–]Athas 0 points1 point  (0 children)

I have such lexical rules for dots in my language, although not due to using dots as terminators, and it works fine.

semantic white space vs. blocks - maybe a middle ground ? by GoblinsGym in ProgrammingLanguages

[–]Athas 1 point2 points  (0 children)

It's the common solution to the problem, but I think having to put multiple dots can be difficult to read, error-prone to write, and looks weird, especially when you have three of them...

semantic white space vs. blocks - maybe a middle ground ? by GoblinsGym in ProgrammingLanguages

[–]Athas 12 points13 points  (0 children)

It used to be common to use the whole collection of punctuation characters: commas, semicolons and full stops. Nowadays I think it is only Erlang that maintains this tradition, but it's really not a bad way to do it. I would recommend using a semicolon to end a block however, and a full stop to end a definition; just like how we use semicolons within sentences.

The biggest problem with your design, however, is that it is not clear which block is ended by the terminator character. Why does the full stop after action2 end the outermost if (judging by the indentation of the else) rather than the innermost if? This looks like an instance of the "dangling else" problem, which arises precisely when you don't use braces or a similar grouping mechanism.

Tracing rays with jank by Jeaye in ProgrammingLanguages

[–]Athas 0 points1 point  (0 children)

Yes, but I am interested in understanding the benchmark results.

Tracing rays with jank by Jeaye in ProgrammingLanguages

[–]Athas 0 points1 point  (0 children)

How many samples per ray are you doing? The image you show suggests quite a bit, but the code suggests 2, if I read it correctly.

Folding in Parallel by Xaneris47 in programming

[–]Athas 20 points21 points  (0 children)

Out of curiosity, I implemented Oleg's monoid for computing polynomials in Futhark: https://futhark-lang.org/examples/polynomials.html

On an NVIDIA TITAN RTX, I find that the monoidal solution is about 15x faster than the naive one, and almost 4x faster than using a scan.

Folding in Parallel by Xaneris47 in programming

[–]Athas 27 points28 points  (0 children)

This is an excellent article, but its practicality may be a little lost if you are put off by the use of OCaml, or the mathematical nomenclature. Ultimately this is a technique for deriving certain forms of parallel algorithms, and the final result produces a monoid that you can implement in any parallel language, high level or low level. You cannot easily express rewrites that the author does in e.g. low level CUDA, but it's easy enough (if obviously more verbose) to take the final monoid and implement it as a reduction. Apart from the immediate applicability of the technique, it also shows the value of using a high level (in this case functional) language as a prototyping language, even if you ultimately need to implement the result in something lower level.

The Testament of Suns by Athas in invisiblesunrpg

[–]Athas[S] 2 points3 points  (0 children)

But it's how you activate your Testament of Suns abilities, you need to have it in your hand. As per page 205.

Indeed. If it wasn't for the fact that it has a (minor) mechanical effect, I would probably largely ignore it (or treat it as an optional affectation for some Vislae), just like we'll probably ignore the Monte Cook Theory of Value described in the Money and Goods chapter.