44 <title >journal.stuffwithstuff.com</title >
55 <link href =" http://journal.stuffwithstuff.com/" />
66 <link type =" application/atom+xml" rel =" self" href =" http://journal.stuffwithstuff.com/atom.xml" />
7- <updated >2025-05-26T20 :57:16.073926Z </updated >
7+ <updated >2025-05-27T00 :57:24.071903Z </updated >
88 <id >http://journal.stuffwithstuff.com/</id >
99 <author >
1010 <name >Robert Nystrom</name >
@@ -242,15 +242,15 @@ Niklaus Wirth&rsquo;s magnum opus language <a href="https://oberon.o
242242< p> In Oberon, top-level declarations are private by default and only accessible
243243to the containing module. If you want to make a declaration public, you mark
244244the declaration with an asterisk:< /p>
245- < div class=" highlight">< pre>< code class=" language-oberon" data-lang=" oberon"> MODULE Hello;
246- IMPORT Out;
247-
248- PROCEDURE SayHello* ;
249- BEGIN
250- Out. String( & amp; quot;Hello World!& quot;) ;
251- Out.Ln ;
252- END SayHello;
253- END Hello.
245+ < div class=" highlight">< pre>< code class=" language-oberon" data-lang=" oberon">< span class= " k "> MODULE< /span > < span class= " i "> Hello< /span >< span class= " p "> ; < /span > ;
246+ < span class= " k "> IMPORT< /span > < span class= " i "> Out< /span >< span class= " p "> ; < /span > ;
247+
248+ < span class= " k "> PROCEDURE< /span > < span class= " i "> SayHello< /span >< span class= " o "> * < /span >< span class= " p "> ; < /span > ;
249+ < span class= " k "> BEGIN< /span >
250+ < span class= " i "> Out< /span >< span class= " p "> . < /span >< span class= " i "> String< /span >< span class= " p "> ( < /span >< span class= " s ">& amp; quot;Hello World!& quot;< /span >< span class= " p "> ); < /span > ;
251+ < span class= " i "> Out< /span >< span class= " p "> . < /span >< span class= " i "> Ln < /span >< span class= " p "> ; < /span > ;
252+ < span class= " k "> END< /span > < span class= " i "> SayHello< /span >< span class= " p "> ; < /span > ;
253+ < span class= " k "> END< /span > < span class= " i "> Hello< /span >< span class= " p "> . < /span >
254254< /code>< /pre>< /div>
255255< p> Here, the < code> *< /code> after < code> PROCEDURE SayHello< /code> means that < code> SayHello< /code> is public. Note
256256that this marker is only at the declaration. It& rsquo;s not part of the name. At
@@ -412,16 +412,16 @@ be confusing to have <code>*</code> right after other punctuation:&l
412412< p> This is declaring a private < code> +< /code> function. It would probably look equally weird
413413to have < code> *< /code> after the name in a record declaration:< /p>
414414< div class=" highlight">< pre>< code class=" language-vgs" data-lang=" vgs">< span class=" k"> rec< /span> < span class=" t"> Vec< /span>< span class=" o"> *< /span>
415- < span class=" i "> val< /span> < span class=" i"> left< /span> < span class=" t"> Int< /span>
416- < span class=" i "> val< /span> < span class=" i"> right< /span> < span class=" t"> Int< /span>
415+ < span class=" k "> val< /span> < span class=" i"> left< /span> < span class=" t"> Int< /span>
416+ < span class=" k "> val< /span> < span class=" i"> right< /span> < span class=" t"> Int< /span>
417417< span class=" k"> end< /span>
418418< /code>< /pre>< /div>
419419< p> That led me to thinking the sigil should be by the declaration keyword. In my
420420language, every declaration form does start with a leading keyword (unlike, say,
421421C where function declarations don& rsquo;t have one), so it& rsquo;s feasible. Something like:< /p>
422422< div class=" highlight">< pre>< code class=" language-vgs" data-lang=" vgs">< span class=" k"> rec< /span>< span class=" o"> *< /span> < span class=" t"> Vec< /span>
423- < span class=" i "> val< /span> < span class=" i"> left< /span> < span class=" t"> Int< /span>
424- < span class=" i "> val< /span> < span class=" i"> right< /span> < span class=" t"> Int< /span>
423+ < span class=" k "> val< /span> < span class=" i"> left< /span> < span class=" t"> Int< /span>
424+ < span class=" k "> val< /span> < span class=" i"> right< /span> < span class=" t"> Int< /span>
425425< span class=" k"> end< /span>
426426
427427< span class=" k"> def< /span>< span class=" o"> *< /span> < span class=" i"> sayHi< /span>< span class=" p"> ()< /span>
@@ -437,12 +437,12 @@ to emphasize the declaration (which is what it does in Oberon where it means
437437< p> That led to my last idea which I can& rsquo;t decide if I like or not. Given Python and
438438Dart, it seems like underscore vaguely conveys & ldquo;private& rdquo; to some people. So
439439maybe use that? It looks like:< /p>
440- < div class=" highlight">< pre>< code class=" language-vgs" data-lang=" vgs">< span class=" i "> rec_< /span> < span class=" t"> Vec< /span>
441- < span class=" i "> val< /span> < span class=" i"> left< /span> < span class=" t"> Int< /span>
442- < span class=" i "> val< /span> < span class=" i"> right< /span> < span class=" t"> Int< /span>
440+ < div class=" highlight">< pre>< code class=" language-vgs" data-lang=" vgs">< span class=" k "> rec_< /span> < span class=" t"> Vec< /span>
441+ < span class=" k "> val< /span> < span class=" i"> left< /span> < span class=" t"> Int< /span>
442+ < span class=" k "> val< /span> < span class=" i"> right< /span> < span class=" t"> Int< /span>
443443< span class=" k"> end< /span>
444444
445- < span class=" i "> def_< /span> < span class=" i"> sayHi< /span>< span class=" p"> ()< /span>
445+ < span class=" k "> def_< /span> < span class=" i"> sayHi< /span>< span class=" p"> ()< /span>
446446 < span class=" i"> print< /span>< span class=" p"> (< /span>< span class=" s">& quot;Hello!& quot;< /span>< span class=" p"> )< /span>
447447< span class=" k"> end< /span>
448448< /code>< /pre>< /div>
0 commit comments