[07:13:18] Hi, I'm trying to implement a function evaluator for Rust, and I am currently working on serializing and deserializing Z881/typed lists. It looks like it is currently implemented as nested tuples or a linked list from https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator/-/blob/main/test_data/javascript_add_Z7.json [07:13:49] Am I looking at this correctly? [15:07:14] .. I think that was correct. I have another question, why are Z881/typed list and Z882/typed pair both implemented (as in, passed to the evaluator) as the result of a Z7/function call, while Z883/typed map isn't? Z883 looks like it is implemented as an alias of a typed list of typed pairs, but still it doesn't need to be implemented as an inline Z4/type, right? Is this something that is intended to be fixed? [15:20:20] Also, is it true that the input to the evaluator is in the format of this? https://gitlab.wikimedia.org/repos/abstract-wiki/wikifunctions/function-evaluator/-/blob/main/test_data/javascript_add.json [15:37:37] I just have a few more questions, so please bear with me [15:37:37] 1. is it okay for my executor to reject Z881/typed lists where elements are not of the same type? I saw test cases for the javascript and python executor that pass parameters like this. [15:42:53] 2. a few questions/thoughts on the interactions between components: [15:42:53] a. What is the role of the function orchestrator? What inputs does it take, and what does it output? I assume an API definition exists somewhere, but it would be better if explained in the README or somewhere on-wiki. [15:42:53] b. What is the input format and output format of an evaluator? This is partly covered by my question above. [15:42:53] c. Since the function evaluator runs on Node.js, it would be nice if evaluator impls for languages are allowed to compile to wasm and return the value returned by wasm (i don't think wasm has introspection abilities, so it would have to be a self-contained binary that handles serialization of return values itself) [15:42:56] 3. Questions for the function model: [15:56:10] actually no I don't have questions for the function model. I'm going to put any comments I have about the function model page on the talk page once I get IPBE [16:02:42] Hi deadbf[m], I'll send your questions to the dev team, and someone will answer to you as soon as possible. [16:03:18] nice, thanks [16:56:35] Luca, can you put the questions on a wiki page? It will be easier to answer it there than in a chat I think. [16:57:44] Thank you for your effort deadbf, that's really awesome! I hope that not too many answers for you will be of the form "yeah it should be x but it's currently y and it's not well documented", but we'll see where it lands [16:58:17] But to say it clearly, having another implementation of the evaluator would be awesome! [17:01:53] thanks for the reply! I'd be happy to continue this discussion either here or on-wiki. I think it would be nice for this to be on-wiki as you said, but fwiw I would need IPBE to be able to edit. [17:02:07] My user name is 0xDeadbeef btw. I applied and got IPBE for enwiki, but didn't apply for a global one as well because I didn't foresee me needing it [17:04:37] What is IPBE? [17:05:04] IP Block Exempt :) [17:05:06] ip block exemption [17:05:45] Ah, ok. Sorry for that hassle! [17:50:48] alright, I just want to bring up another thought I had while reading the function model before I head to sleep. I presume that sum types are possible to construct/will be possible to construct. With sum types we could make a maybe/optional type by the sum of the unit type and another type. With the optional type a typed list can be defined as `Option<(T, TypedList)>`. I think this is the current implementation? It would be nice [17:50:48] if this has an implementation as a composition of these type constructors in addition to the built-in one to formalize it better. Also, what's the situation for optional fields? It looks like Z14/implementations can have omitted fields. Would it be better if all fields are required, but unit should be used if the field is omitted? (please have it as an optional monad and not make null a bottom type) [17:51:15] Anyways, you folks are doing great work! Wikifunctions is a very exciting project! [18:01:59] Thanks for all the great questions and the interest! [18:01:59] If I understand correctly, you plan to get IPBE and re-post these questions on the relevant meta-wiki talkpage. (Unless someone answers any of them in the meantime). Let us know if that doesn't work for you, and we can work something else out. [18:01:59] This week has been extra-busy/stressful for the developers for obvious reasons, hence they're not around to chat for now! Sleep well. :)