« first day (1421 days earlier)      last day (114 days later) » 

01:15
@nathanrogers It's hard to know how to answer that. I think the mindset is generally closer to lisp than APL but the bag of tools is closer to APL. I think "fold" for reduce and my thinking is not limited to monadic and dyadic functions as I'm quick to reach for a lambda when necessary as opposed to the kind of veneration that tacit gets in APL.
It's generally easier to have discussions around particular topics. @copy has done some live-streaming of K on Twitch. I don't know if that's the kind of thing you're after. I have thought of doing sort of live-streaming in blog format. I wrote a tiny tutorial script which you can run from K which mixes going through text and having an interactive prompt modeled on some J tutorials. github.com/gitonthescene/ngnk-libs/tree/master/tutorial.
My idea was to walk through the development of some code using this. Is this something you'd be interested in? (feedback always helps motivation)
Also, similar things seem to come up over and over in code competition type problems. When you see super super slick solutions, they are often borne of years of polishing one's bag of tricks. Also getting feedback here and on the Discord helps a lot.
FWIW, aoc2021/day2 doesn't look too too different from yours. github.com/gitonthescene/AoK/blob/main/2021/day2.k
01:39
Hmm maybe not
01:53
oh even did a 3 column reduction
Triadic amend doesn’t tend to show up that often and it looks like you’ve used it twice. I’d say your solution feels sort of Haskell-y in its reliance on machinery. In K (and array) languages the focus is more squarely on the data and its transformation.
I just look at other people's K code, and looks like there's some kind of hidden sauce of K-fluent code not relying on functional abstraction, only using functions where precisely necessary, but I don't know how you begin to think about solutions without first understanding the domain, in the form of functions
for instance, in my solution "forward" is the differing step, so there's a different function inserted for handling "forward", that seems like a functional abstraction, so I rolled with it
and as you said, I reached for amend because I wasn't sure how to do the transformation I wanted otherwise
I felt shoehorned into the decision because I don't understand what other tools there are
not from lack of knowledge, I've messed around with K several times at this point, I just don't know how to use the primitives in a fluent manner
how they combine, idioms hidden in plain sight, special domain usage of the idioms that aren't obvious by the example documentation
I read through the book, oK's docs, other K examples, and the K examples are super confusing because it is never clear to me how the approach solves the problem... not to mention most of the aoc solutions don't define any functions at all
I think this is where using APL-like toolset comes in {x,y}[0 0]'j is just 0 0,/:j
so while we're speaking the same language, it's like a completely different dialect
I see where you’re coming from but I don’t think it’s comes as much from a mindset as some experience. Making the most out of the set if tools just is very different than say Haskell.
01:59
I have very limited Haskell experience, most of my functional experience is JS/CL
I am also not a train-first APLer, more of a dfn first, DSL first APLer, though thought leaders in APL-land would say functional abstraction is an anti-pattern
but I have a natural aversion to reaching for looping and branching constructs in any language
and in K, especially with as long as lines get (I don't like long lines), I extra-double-super avoid really long expressions and prefer to name them as functions... and the lack of true lexical scoping makes me contort my thought processes even further
I think the very most basic part of array programming is two things: rank polymorphism and scalar extension. Those should become ingrained. The former means to perform an operation pointwise as in 1 2+3 4 (not all functions work this way. Take , for instance) and the latter is 1+2 3 where scalars are effectively repeated to match the shape.
Each right effectively forces scalar extension even when you have a list.
I should be clear, I worked at Dyalog for a season, I'm familiar with Array-oriented thinking, what I mean is specifically K, compared to APL, not K AND APL
Is it clear how 0 0,/:j would work now?
yes, I wasn't sure how to express it in K, because I would have expected 0 0,'j to work
(⊂0 0),¨j
I understand why it didn't, but I didn't know how to express it
Oh, okay. I was just guessing how you arrived at your solution. Would you like to see how I might have rewritten it?
02:05
absolutely
as for how I arrived at my solution, it was the recognition after solving P1, that the only thing changed was "forward" so I needed to keep track of a 3rd property, and define a different function for that dict
Gotcha. So each right is more like the rank operator with infinite rank on one side.
with a list of functions, apply those functions to each row
Yeah. I see that. That feels less oriented around data transformations than is typical.
which is totally not what I would have done in APL, I might have tried something like f@a⊢m, but I think I'd rather done some kind of f\m
in K, the primitives feel so limited, and I don't know how exactly to combine them to get things that feel easy and "free" in APL
K has scan and @.
02:09
I just mean, because of my functional programming background, list of functions seemed the natural approach in K
I think you may be overthinking this a bit. I suggest looking for direct translations first.
but in APL, there are no list of functions
Right, but that doesn’t mean you should use them when they’re available.
The ngn solution you posted is decidedly data first.
It's sexy, but I sure do don't understand it at all
seems like converting the first characters to integers somehow
and so each thing, rather than referring to its name or key in a dict, its an enum
I don't understand how that's happening, but there it is
I think 4!... is bins? eitherway, *'a is f/u/d which is what I'm doing, but he's mapped them to an enum
-48+ is doing some character offset I think? because pick each reverse each is the integer value
I definitely don't understand line 5+
I think that 4! is sort of a gimmick exploiting the ascii codes.
02:21
oh, just because the characters happen to be distinct mods of 4?
Yeah, the -48 thing is just converting the char to a digit. 1 -1 0 is reordering because of the 4! gimmick.
Yes.
so... is this how one is meant to work with K?
or is this just golf trickery
People use K for different ends. I’m not sure code at 1010 looks like this. I posted my solution above.
Do you have any particular goals?
One of the serious problems with learning K is how few non-trivial examples there are. The AOC solutions people post are not interconnected in any way, there's no real structure, just stand alone scripts in single files that are not interdependent in any way. One would not miss true lexical scoping in this way, but how the hell do you write actual application code?
@doug Yes, I would like an open source Array language to use without loads of hassle. I love April, it's getting faster all the time, and with some great stolen features from K, and even an interesting array-specific lazy evaluation
I’ve tried to post some stuff in my repository posted above. Poke around a bit and let me know if you have questions.
02:29
but I want an array language I can use on its own... I keep coming back to K after cycling through April and BQN over and over, but at least in those projects I have an idea of how to arrange larger applications
AoK? Is it all aoc stuff?
or do you have anything else built using K standalone?
There just aren’t a lot of public larger K projects. I’d like to see more too.
https://codeberg.org/CptJimKirk/aoc/src/branch/main/apl/aoc2017

this is my AOC stuff in dyalog, and I have a "user interface" that pulls the input from the web (provided cookies in the correct format), but every example I see elsewhere is just single file scripts, or even non-running text dumps of the code snippets
the user interface idea came from starting in April with Common Lisp, interacting with the APL code through a simple command interface in the slime repl in EMACS
Yeah. The larger stuff is proprietary. That may also discourage people from sharing because they’d feel exploited.
there was nothing really for me to go off of for APL project organization either
Oh, CptJimKirk. I’ve seen you on the Discord.
02:33
so I wound up creating a single file for each OOXML component which would generate that OOXML files' contents
But if I had it to do over again, the organization would have been much different
I've developed a style with APL, but with K, there really doesn't seem to be room for any kind of style
just flat structure, long, LONG (did I mention LOOONG) expressions, and of course, no lexical scope
I’d disagree with that. As I say it’s easier to have discussions about more concrete topics.
Well, I don't know what more to say concretely, because my concerns and confusion is conceptual in nature
I really don't get the gist of K, aside from flat script files, it looks like that's all it is
I've seen enough APL, production and proof-of-concept code to get the gist of how I would want to structure projects
but in K... since every example is basically golf+script oriented... how ought one learn how to begin tackling a non-trivial project?
Yeah those are hard conversations to make productive..
Nothing to it but to start. I’ve pointed to my efforts.
I find it's hard to be productive without them.... but then structure and organization is baked into most languages, and languages where it isn't baked in like C, there are industry standards based on established norms
yes, I looked at your xml library earlier today, but again, it's a single file
not a criticism, but it doesn't reveal any discernable pattern to project organization
what libraries would be beneficial to people?
does ngn/k contain any kind of socket behavior baked in?
Basically my sentiments here: github.com/gitonthescene/ngnk-libs
 
2 hours later…
04:29
what is partition?
i_A is ok, but it includes the thing I want to split on
1_'(&""~/:i)_i
basically split on empty lines, but I don't like it
 
11 hours later…
15:50
there are some q/kdb+ "official" library codes available at github.com/KxSystems/kdb
some other results here: github.com/topics/kdb-q
these are probably closer to what "application" type code would look like
 
2 hours later…
18:16
does ngn/k have an FFI? if so, is there documentation? I don't see anything about it in the usual places
not in ngn cart, not in any of the \ menus, not in the book or tutorial that I can see
if no, is there an established pattern for compiling c libraries into the k binary?
19:21
I don't think there's that much (if any) real documentation out there
but not any substantial examples or patterns
 
2 hours later…
21:00
is ngn on vacation/missing/just afk?
ngn
ngn
no. i'm here :)
any suggestion on FFI, or if not, baking in libraries into the build?
ngn
ngn
isnt what coltim mentioned good enough?
21:17
what do you have against minimal examples? You know, something that I can glance at, understand, then extend and modify to fit what I want to do... something that doesn't take a full afternoon, day, week, year, lifetime to unpack.
What you're asking me to do is to commit to the the time in advance of knowing whether or not its worth my time
That's ridiculous
ngn
ngn
im not asking you to do anything
When a minimal concise example would take 3 LOC I'm sure
@ngn yes by providing me with the link, suggesting that it may answer my question, you're asking me to go through the process of not only understanding the use case, and also zig which I've never touched, in order to extract some generalizable pattern that I can use for myself.
how can that be construed as anything but placing the impetus of discovering the answer upon the novice seeking help? I don't know whether it will have been worth my time to interrogate the example provided until I spend the time to do so, when I'm certain you, the creator of the language understands how it works and could either explain it or write down a contrived example which I could then use to...
be productive, instead of going to learn Zig the rest of the day to determine whether this example is useful or not
just as with the C example. I've spent a fair bit of time toying with Whitney C as I understand it, but that doesn't mean that staring at someone else's code immediately reveals it's purpose, or what generalize truth lay beneath this particular manifestation...
@ngn Correct me if I'm wrong, but it appears that (having stared sufficiently long as to make a few inferences) this is the inverse of what I'm looking for... Instead of importing C functions to K, it appears this header allows someone to import K into C, no?
same with the zig example?
I'm not (necessarily) interested (at the present moment) with calling K from somewhere else (though I might toy with that another time) I'm more interested in linking to compiled functions from k
@ngn while that other question remains awaiting its asynchronous response, I have an unrelated question. I see no mention of the ![...;...] form, which happens to appear in my code somewhere, so I'm assuming you, or someone who knows what it is provided it to me
it is being used in a cut expression ![a;b]_c, what is it? (not what is it doing in this specific context, but what is the ![...;...] form generally)
22:13
f[x;y;z]is an m-expression meaning call f with args x, y and z. You can even call builtins either monadic or dyadic as m-expressions. m-expressions bind tighter than stranding. This is just the builtin dyadic ! with _ called with that result as its left argument.
Yes I see... derp
@nathanrogers that's correct; but you can write C that imports other C into ngn/k
providing an API for importing arbitrary C libraries without having to write any C yourself is a massive endeavor, much above the standards of k
22:30
@dzaima my question was whether there is a ready-made, baked in, standard, in-spec tool for importing libraries now
there isn't
if the answer is no, then the answer is no
@dzaima has BQN such functionality at the ready?
@dzaima judging by the phrasing, and the general lack of response that neither is this an intended feature, and I shouldn't expect it at any point
I'm of course not ngn and thus have no say on what will or will not be added to ngn/k, but that's that I'd expect, yeah. It should be possible to write an extension using the existing C interface to add in such a thing though
22:36
You could also spring for a kx license which has such functionality.
@dzaima If I wanted to use C, I would be, but I'm not. My purposes are to, as best as possible, use an array language for core development. If I wanted to use C, I would have done so long ago. The idea that a language which not only lacks any sort of built-in means of communication with other systems also refuses the most basic way of including such means...
and expects users to modify and extend the binary of the language to achieve such is absurd to the point of physical pain
well, it'd take just one person to write such an interface, and then everyone could use it. Sure, you may not prefer writing the C to do that, but who would
@dzaima I think more germane to the point: How is it, in any universe, the correct response to someone weighing their options as to whether a specific platform or tool is the correct one for the job, "build the functionality into the core of the language if you want it" ?
I'm shopping for a tool, not an adopted construction project
If I go to the store to buy a hammer, I don't also wish to buy a smelter, mould, and forge to build the hammer I want myself...
@nathanrogers in the world where you don't expect everything you want to be given to you by free
@dzaima Incorrect. You can not expect a novice, who doesn't know whether they're even willing to spend the requisite time to become fluent and skilled with a tool to also become an expert in the implementation of the tool, to implement features that are missing, when they are not already remotely fluent enough to know whether it is worth their time to become fluent.
22:43
You wouldn’t have to build it into kx.
you do have the option of not using ngn/k
@dzaima when weighing my options... as to whether or not I should... I asked a question... to which the answer....
was "read this source code/ implement it yourself"
so the correct answer
to the question that was asked
would have been...
"no"
@doug that is becoming more and more clear by the year
@doug shakti purports to have the same in-built functionality, but I have yet to see an available unlicensed version on their website, inquiries into which have resulted in "new version is being developed"... ok, so will there be one within the perceptible future? remains unclear
I'm not super interested in Q, neither am I interested in an unsupported, undocumented K4
It would be super informative in my process of searching the domain space... to see any examples whatever besides AOC, or single file, 2-300 character script files... Even just to know whether they exist... what problems are being solved with NGN/K that aren't toy for-the-lulz golf problems?
Can anyone answer me that?
I think gleaning a no to your specific question from the answers you got isn’t that hard. What you got instead of a short direct answer was context which is probably worth being grateful for. I read each of these responses as trying to be helpful. Basic appreciation is an investment you make to keep getting useful answers.
@nathanrogers I guess the "full" answer would be "no, but you can write it yourself if you are able to". It should be quite obvious that if you can't/don't want to write a thing, you won't have the thing, though
@doug Wasn't "hard"... just a significant time investment for someone shopping around. And inconsiderate at any level
@dzaima yes, the addendum is painfully evident... the first part, however, is not
22:51
I didn’t see it thar way. But you’ll be able to weigh the success of your approach when you review the return on your response.
Seriously, can anyone answer me what non-trivial, actual business or standalone applications are being built without external communication? Is it just a glorified calculator? Or is it really only used as a file processor? What?
No
No you can't answer me, or no it isn't just a file processor/glorified calculator?
I thought you preferred direct answers? I just don’t understand.
The question was, what non-trivial, non-scripting uses are there for a language such as ngn/k that has no integrated means of external communication or messaging?
22:54
@nathanrogers ngn/k can also invoke shell commands. And the C interface, like it or not, does exist, and, if you can be bothered to write a bit of glue C, it shouldn't be hard to use
What concrete examples of a valuable application is there, written with this specific k implementation?
and there are plenty of file processing things one can do
yes there are, but that seems to be the only use case I've personally witnessed... which I don't do much of, aside from AOC, which is a game
@dzaima so can literally every language I can think of
invoking shell commands is not the same as having that behavior native within the language
socket.io with callbacks is much more preferable than wrangling manual OS sockets from the shell via a script...
which could be imported if there was support for an FFI, but there isn't
has anyone implemented any standalone, substantial applications using ngn/k that do anything besides crunch files on disk/glorified shell scripting?
not that has been publicly discussed as far as I'm aware
the amount of required to acquire the direct answer I was looking for is remarkable...
But that says it all for me... Any potential use case I have for any language requires external communication. Asking me, a non-user, questioning whether or not I should adopt the language when it may be missing the functionality I require fundamentally, to implement such behavior on my own behalf, when I'm not even certain it is a tool I'm willing to invest time merely to learn, is one of the most socially illiterate behaviors I've experienced on the internet of late
23:03
I think the lesson you’re missing is that any response whatsoever you get is charity. As is any response any of us gets without making an investment.
@nathanrogers because things are usually quite nuanced; before you explicitly said that you don't want to write even a tiny bit of C, the C interface is a good option, even if using it for your requirements is somewhat roundabout; and you can't exactly expect me or doug to know all things that have ever been made with ngn/k
if it's such a tiny bit of C, then why did you say it "is a massive endeavor, much above the standards of k"
if it's such a tiny bit of C, why isn't it implemented already?
a tiny bit is to write custom wrappers for just the functions of the libraries you need; a massive endeavor is to write an interface that can, without having to write any C, import any and all C functions
(assuming you're not planning on importing hundreds of C functions, at which point I guess both wouldn't be particularly nice to do)
You could very well ask yourself why you’re unwilling to do it. I suppose the answer from someone else would be similar.
@doug I think the lesson you're missing is that, while charitable, there remains the possibility that the charity isn't beneficial to the recipient, as with many actual IRL charity causes, such as canned food drives, or donating shoes to Africa, which put more of a burden on the people being targeted for aid.
Asking a newcomer to read the implementation to determine whether the implementation is a sufficient answer to the question, especially when the implementation is so alien to anything that a typical newcomer might have experienced...
23:07
It’s such a basic lesson it’s called The Golden Rule.
@doug No, I'm not asking the question from first principles... I'm asking the question in response to both "massive endeavor" and "tiny bit of C". The question isn't "why doesn't the person who hasn't decided whether committing to learning a tool is worth his while doesn't want to extend the tool in question", but rather, how can you be blind the the coy, deliberate, disingenuous double speak?
How often do you find conversations ending up like this? It’s worth reflecting on.
Do you know, the only thing in common with conversations that end up like this? It's the fucking array language community. Go fucking figure.
But you want your interactions to change. What can you do to effect that?
Not one other language community that I've participated in suggests such responsibility upon the novice who is unsure as yet whether the tool is worth their time, to read the fucking implementation to understand the behavior of the tool in question.
23:12
Even now. I want to have a different conversation than you. You are on the other side of that. What should I expect of you?
No, I just want people to be a little more considerate to people asking questions, and perhaps try to answer the question asked, rather than answering more generalized versions of the questions you think are asked... And CERTAINLY don't answer the question with asking the newcomer to conduct research into the implementation of a tool they're as yet unfamiliar with
and what's more, I've done as much research as could have been expected before coming here to ask the questions in the first place.

I check the readme, the links in the read me, the ngncart, I read the book in its entirety, and the tutorial in its entirety, I checked with other implementations docs and read loads of examples
@nathanrogers you did not specify that you are a newcomer and want to either be able to do this quickly or switch to another language otherwise, at least initially. Given the context, an equally valid interpretation of your question would be in a context where you've written a bunch of k already, and have to interface with a library at whatever cost, at which point reading the source code isn't that bad
So when I had depleted my ability to search, finding no clear answer, I came here to ask a direct questiona
What should I expect of you?
What more do you want than what I just described?
That someone put in their due diligence? And then interrogate the actual implementation to determine whether a feature exists?
23:14
@dzaima (and a "no, you can't import C functions into k" would be extremely counterproductive for the latter scenario even!)
rather than asking in the place where its maker frequents, asking to know in plain terms?
I think I’m not equipped to make this a productive conversation. I’m sorry you didn’t get out of it what you wanted.
My suggestion for the K community at large: actual, searchable documentation. substantive examples. answering questions that are asked as they are asked, not asking more questions to a user who doesn't know anything
@nathanrogers we don't know when a user doesn't know anything though. Wanting to use FFI or sockets is a pretty advanced thing that I wouldn't expect a novice to want to use first thing, so I'd say giving an advanced answer isn't that unreasonable
@ngn This would be like me asking "what happened in the battle of jericho" imj.org.il/sites/default/files/The-Dead-Sea-Scrolls.jpg "Here's an image of the dead sea scrolls... what, does the 2000 year old Hebrew document not answer your question"
@dzaima Pretty obvious. Did I come and ask "can someone tell me where in the implementation I may extend the language to house additional features I require", which would imply that I'm fluent in C, and Whitney style at that, and also that I have the interest to do that implementation work....
OR did I ask if anyone has concrete examples of such behavior already implemented, and how I can use it in K, NOT implying that I'm fluent in either C, or Whitney C, or that I'm interested in anyway to extend a language I'm interested as is and not as an adopted pet project?
"What happened this week in China"

"What, does this article written in Mandarin not answer your question? It's just a little bit of Kanji, you want to know what happened in China, but you won't learn to read Kanji?"
This is the level of discourse we're having
"I had no way of knowing you aren't fluent in Mandarin, I just assumed that because you expressed interest in Chinese current events that you were fluent in Chinese and everything about their culture!"
23:24
if you wanted to, you could learn C to achieve a certain goal. If you can't be pushed to learn anything, should we also answer a "how can I write to stdout in k?" with "you can't, unless you learn about ` 0:"?
stop being coy
the direct answer would be a snippet containing a working minimal example that could be easily digested and employed by the asker
"If you can't be pushed to learn anything" what the fuck is that?
@nathanrogers you have decided that having to write C code is off-limits
I've been digging into every K implementation for the past week to figure out what the features of each one even is...
And it was unclear to me whether this functionality exists in ngn/k, so I came to ask
like it or not, at the cost of needing to write C, you can import libraries into ngn/k. Therefore suggesting to read & write C is a valid answer to a question on how to import libraries into ngn/k. If that answer isn't good enough for you, you can easily make the choice of not writing C, and thus not getting to import libraries in ngn/k, but we can't know whether it's something you're willing or not willing to do before you say it
@dzaima I didn't fucking decide. I was shoved a screenful of Whitney C, which I am NOT DISINTERESTED IN LEARNING, but which I AM NOT CURRENTLY FLUENT and asked whether or not it was an answer to my question... which took me at the least an hour to arrive at what the code may or may not be doing, not because I was able to read what the code does, btw, but because I made the inference that it seems to import K elsewhere
23:29
that file also had a comment to a file with nice comments
@dzaima no, there is no like it or not... this conversation is not about my willingness or not to write C, but rather the fact that all of the answers I got were neither answers but questions in themselves, nor answers to the question I asked
no one can convince me it is reasonable to respond to an information question like "does x exist" with an answer like "go implement x yourself"
what a thickheaded fucking asshole response
1. missing the point 2. not answering the question 3. dismissive 4. blaming the asker for the lack of functionality
gtfo
then spend the next 2 hours trying to convince the asker that in fact it actually is their fault for their blatant refusal to do free work when all they wanted was a direct answer to a question, because they're trying to weigh the differences in implementations to decide which tool is best for their current needs
@nathanrogers what if there is no existing working minimal example? should someone be required to write one just for you? we're not advertisers getting $x/hour here to try to get you as an ngn/k client; our time matters too
it isn't enough for a user to want to learn to use a language, no they also need to become implementors before they even become minimally proficient with the language in question
@dzaima "no, there is no existing working minimal example"
seems like a better use of your time, and my time, and everyone's time to answer the question that was asked
You got a no umpteen posts ago which leaves me wondering if you want more than just an answer to that question.
@nathanrogers as an answer to this, yeah, a "there is no minimal working example" would fit, if there is no minimal example. But before that, you were just asking for pointers
23:38
"n-o" seems like less effort even than browsing to the urls that were linked to paste it over for me to then burn an hour of my time only to realize that it isn't even the behavior I was asking about
@nathanrogers ngn/k isn't the only language where it's not the case that every single possible thing you can do with the language is something that a complete novice can immediately be able to understand how to do
It feels like there should be a negative in there somewhere.
oh yeah
@dzaima I can't say I understand the readme... it seems to imply that somehow this directory enables the user to dynamically load foreign functions inside the K REPL... yet the files only contain code calling k code
I apologize if my initial responses were not explicit enough. my tendency is to couch everything I say, especially if the question appears to have some tension behind it
23:44
and what does "and run

the REPL with LD_PRELOAD set to that library." mean
FFI is a quite advanced thing that I wouldn't suggest, nor expect, a novice to want to do first thing, in any language; maybe FFI is something you live and breathe, and absolutely can't live without, but that's quite far from the norm
at the end of the day the open source K community is made up of a handful of people, only a smaller subset who actually understand and can work at these lower levels (i.e. on the implementation directly, versus in the language)
@coltim I meant no tension, only to be precise. I want to import compiled libraries into k and I wanted as direct an answer to whether that feature even exists.
@coltim this.
it's one of these small scale things, kinda like local politics, where the contributions of individuals essentially are the thing
2
Me being one with only cursory knowledge of low-level languages, when asking whether the high level language has a feature I require for the work I would like to do, is not expecting to be asked to go pick up an entirely alien skillset to implement such a feature on my own.

I wanted just a simple yes or no, and I would put an - in the "communication" column of ngn/k in the table of open source k implementation
23:48
hmm, noted on my end. I guess one nuance is that it technically has a FFI, just one that is minimally documented and without sample implementations
which I don't want to get too philosophical about but does complicate straightforward answers
I was already sensing that the only implementation(s) of K that match what I require are either Kx K4 or Shakti (if it even exists because all attempts at asking about where to find an implementation has been met with "working on it" for at least a year)
@coltim curious
I would not expect shakti to be as production/real-world-use-case-applicable at this time as q/kdb+
Seconded
and pointing folks presumably interested in open source/free implementations to something that is not that (but totally, 100% does have FFI stuff and examples and everything) is also not really a direct answer. even if it kinda is the answer at this time (at least until someone steps up and does this whole FFI thing)
@nathanrogers I'd guess noone's bothered to use it much to notice the flaws/missing documentation (or didn't bother to report it, or didn't find it that challenging); someone has to be the first one to do so, and if noone does, a feature won't get anywhere
23:51
the issues I have with wanting to use either of those (besides the obvious cost) is that 1. most of the community is so cagey about their code, and 2. all of the problem solving is centered around a specific problem domain, and I'm interested in standalone desktop applications and typical business server applications
@dzaima I think a table on some wiki somewhere cataloguing the inherent language features of the K implementations would be most helpful... though I don't know if I'm qualified to create such a table, as I was only really looking at external communication in particular
The private companies are cagey because they want your money. Offer them some and they’re likely to be less cagey.
shakti at least can be embedded in node, which of course bundles all the server type stuff I would want to do... but I really would prefer to use a single language... which is why I am looking at K as an alternative to April
Everyone else is being nice less because they care than that they want the karma. (You know who you are… :P)
@nathanrogers if such were made, I'd say that k.h would still be appropriate to put into external communication. It may not be nice nor documented, but it still exists, and you can conceivably use it to import external libraries
not fully understanding, it seems to me to be more "embedding" rather than "external communciation"
but like I say, I could barely infer that it was doing that even
23:54
you write C that embeds k, and that C does external communication
and that more from just realizing there are calls to initialize the K runtime more than anything else
right, so as you say, C is doing the external communication
Imagine a C program which does nothing but call the K repl from an embedded K.
the difference being that hosting a web server in Kona, Q and Shakti is a commandline flag
communicating with web servers is a call to an integer function (if I recall correctly)
I get the sense that Kx is interested in expanding the domains in which q/kdb+ (and thus kinda sorta K) is used, and I think it's fair to say that that is still a work in progress
@nathanrogers only just barely so; you don't need to do all your external processing logic in the C side, but just enough to hand over the controls to k
23:57
that's not the same thing as writing a C application that has an embedded DSL
I don't think the open source K community has anywhere near the resources, so there's a proportional effect in terms of what's possible or not with the open source/free versions
Maybe someone should throw some money around as an experiment!
understood, it is rather difficult for someone shopping around all options, open and proprietary, to determine what features exist or not. It would be helpful, but also woule probably deter people in future from using the open source options entirely as they would appear to be missing fundamental features of any language suitable for development out of the box

« first day (1421 days earlier)      last day (114 days later) »