« first day (1021 days earlier)      last day (1628 days later) » 

12:45 AM
@Adám Do you have any resource/tutorial/etc for development in APL using text source (not .dws)?
 
@Bubbler Maybe have a look at the Link wiki, but make sure to update your Link by merging the repo into your Dyalog install folder.
 
@Adám yes it is fixed!
:)
 
We are working hard on making it seamless to use only text sources.
 
@Adám is there a way to delete some of the scrollback text in the main working REPL area? It seems if I shift+Up to select some and delete it, as soon as I press Enter again, it all reappears
 
@TessellatingHeckler Ctrl+Del should do the trick. You can also clear the log completely with Log>New.
 
1:02 AM
@Adám thanks! ctrl+del is exactly what I hoped for; it's so convenient to be able to try something inline and then get rid of just that bit of output, I like it more than switching often between editor and executor and still losing sight of previous output.
 
@Adám Looks great. Btw, what's the difference between link.expunge and link.remove?
 
 
3 hours later…
4:33 AM
Also, any way to keep dependencies between function definitions?
 
4:45 AM
I guess I can live with calling ⎕SE.Link.Import inside functions, but having a better way would be definitely nice
 
 
3 hours later…
7:28 AM
Are there any good resources on writing an APL interpreter?
 
@voidhawk You mean an interpreter written in APL, or an interpreter for APL? Or both?
 
Sorry, I mean an interpreter for APL. Useful data structures, parsing tricks, that sort of thing
 
 
5 hours later…
12:49 PM
@Sherlock9 Really odd. I loaded your session file, and train trees show fine. Btw, if your session file gets completely messed up, you can erase it, then start APL, then )load buildse.dws and follow the instructions.
 
Thanks! I'll try that next time
 
 
2 hours later…
2:35 PM
@voidhawk do you want speed? extendibility? simpleness of implementation? The way you write one varies a lot depending on these (dzaima/APL is in the most annoying middle of all of those, trains & builtins being somewhat performant, dfns being unusable if called more than a couple times & requiring all numbers to be at most 64-bit floats and was made with pretty much zero knowledge of how to make a proper-ish language)
 
 
3 hours later…
5:41 PM
As a side project, I'm thinking of putting together a small puzzle game in the Zachtronics style (TIS-100, Shenzhen I/O etc.) where the player will use some custom APL dialect to solve puzzles
Given that, I don't think that speed or even things like float support are super important, but ease of implementation would be nice, and ideally it can be structured in such a way that I can add features like arbitrary breakpoints to make it easier for the player to debug (upping complexity by an order of magnitude, I know)
Probably doesn't help that my only experience writing interpreters is for scheme, and I've never done any gamedev, but hey :)
 
6:11 PM
@voidhawk my only experience was writing a horrible, horrible ""parser"" for SOGL, and it reflects in that dzaima/APLs parser is horrible and features mini-regex-ish parser :D
 
6:32 PM
@voidhawk Marshall says: You don't need to built up an abstract syntax tree. Parsing from right to left is enough.
@voidhawk Links from Marshall: Scanning, Parsing/execution (all one step)
 
@voidhawk I had an idea of an APL crossword akin to regex crossword regexcrossword.com
 
6:54 PM
@Adám Awesome, thanks! Doing a scan and using a state machine seems like an easy enough place to start
 
@voidhawk I'll forward your reaction :-)
 
@KritixiLithos You should do it! I think it would be fun
 
@Adám right, that's an important thing - ASTs don't make any sense in non-static APL, and derived operators/trains are just special functions which happen to also store other functions
 
@voidhawk @KritixiLithos How exactly would it work? You'd have APL expressions and pointing at a matrix from different directions and have to give the result on the other site? Or you have sets of arguments and have to write expressions so they give something (1?)…
 
I was daydreaming of an APL interpreter in C# recently; where the novelty would be being able to import it into a running PowerShell session / process; declare some PowerShell variables, then evaluate some APL code to manipulate them in-place.
The more I think about it, the more difficult it seems, and then Dyalog changed the download terms for Dyalog APL, and I had a quick go at running {quad}USING to get System.Management.Automation , and launching a PowerShell runspace inside it
but for .Net assembly searching reasons I have no clue about, Dyalog can't resolve the right assembly and I got nowhere
 
7:07 PM
@TessellatingHeckler Ah, I seem to remember you wrote something about that. Can't seem to find it. If you tell me about it again, I can probably get John to help.
 
@Adám hmm, I think what I was trying is
 ⎕USING←'' 'System.Management.Automation,System.Management.Automation.dll'
 ⎕NEW PowerShell
and there's a popup error window saying
Assembly load failed:
Could not load file or assembly 'C:\Program Files\Dyalog\Dyalog APL-64 17.1 Unicode\System.Management.Automation.dll' or one of its dependencies. The system cannot find the file specified.
Could not load file or assembly 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Management.Automation.dll' or one of its dependencies. The system cannot find the file specified.
I don't know if I'm doing the right thing in .Net terms, but there is a System.Management.Automation.dll in the global assembly cache somewhere; and the .Net thing I was going for is the System.Management.Automation.PowerShell.Create() static method
 
@dzaima What's the core structure you ended up using for arrays? Can it be as simple as (shape, type, data)?
 
7:28 PM
@voidhawk as a minimum, my Value type stores shape (and also rank & ×/shape for ease-of-use) and has an abstract method for getting a Value version the n-th item, and has 2 subclasses - simple scalars (depth=0) & arrays. there's many little extra details, but that's the gist of it
type isn't stored anywhere directly, it's just a result of the abstract method actions
 
 
2 hours later…
9:16 PM
@TessellatingHeckler The issue seems to be that the dll isn't in the search path. Luckily, we can ask PowerShell for its dll location. The following is my session transcript:
      dll←⊃⎕CMD'powershell -command [PSObject].Assembly.Location'
      ⎕USING←''('System.Management.Automation,',dll)
      PowerShell.Create ⍬
System.Management.Automation.PowerShell
 

« first day (1021 days earlier)      last day (1628 days later) »