{"action":"created","issue":{"url":"https://api.github.com/repos/NetLogo/LevelSpace/issues/131","repository_url":"https://api.github.com/repos/NetLogo/LevelSpace","labels_url":"https://api.github.com/repos/NetLogo/LevelSpace/issues/131/labels{/name}","comments_url":"https://api.github.com/repos/NetLogo/LevelSpace/issues/131/comments","events_url":"https://api.github.com/repos/NetLogo/LevelSpace/issues/131/events","html_url":"https://github.com/NetLogo/LevelSpace/issues/131","id":346972138,"node_id":"MDU6SXNzdWUzNDY5NzIxMzg=","number":131,"title":"Ordering of ls:ask","user":{"login":"arthurhjorth","id":1860843,"node_id":"MDQ6VXNlcjE4NjA4NDM=","avatar_url":"https://avatars0.githubusercontent.com/u/1860843?v=4","gravatar_id":"","url":"https://api.github.com/users/arthurhjorth","html_url":"https://github.com/arthurhjorth","followers_url":"https://api.github.com/users/arthurhjorth/followers","following_url":"https://api.github.com/users/arthurhjorth/following{/other_user}","gists_url":"https://api.github.com/users/arthurhjorth/gists{/gist_id}","starred_url":"https://api.github.com/users/arthurhjorth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/arthurhjorth/subscriptions","organizations_url":"https://api.github.com/users/arthurhjorth/orgs","repos_url":"https://api.github.com/users/arthurhjorth/repos","events_url":"https://api.github.com/users/arthurhjorth/events{/privacy}","received_events_url":"https://api.github.com/users/arthurhjorth/received_events","type":"User","site_admin":false},"labels":[],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":3,"created_at":"2018-08-02T11:31:48Z","updated_at":"2018-08-02T14:28:47Z","closed_at":"2018-08-02T14:00:46Z","author_association":"MEMBER","body":"I forgot. Did we decide to unorder `ls:ask`? I think we should. In the circumstances where people want to order it, they can sort `ls:models` just like they would have to do with turtles, and if they want to save \"special models\" that should be treated uniquely, they can save them in variables, like they would do with turtles.\r\n\r\nThis would need to be changed in the code though, so our documentation aligns with the paper. :)"},"comment":{"url":"https://api.github.com/repos/NetLogo/LevelSpace/issues/comments/409946329","html_url":"https://github.com/NetLogo/LevelSpace/issues/131#issuecomment-409946329","issue_url":"https://api.github.com/repos/NetLogo/LevelSpace/issues/131","id":409946329,"node_id":"MDEyOklzc3VlQ29tbWVudDQwOTk0NjMyOQ==","user":{"login":"qiemem","id":28215,"node_id":"MDQ6VXNlcjI4MjE1","avatar_url":"https://avatars1.githubusercontent.com/u/28215?v=4","gravatar_id":"","url":"https://api.github.com/users/qiemem","html_url":"https://github.com/qiemem","followers_url":"https://api.github.com/users/qiemem/followers","following_url":"https://api.github.com/users/qiemem/following{/other_user}","gists_url":"https://api.github.com/users/qiemem/gists{/gist_id}","starred_url":"https://api.github.com/users/qiemem/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qiemem/subscriptions","organizations_url":"https://api.github.com/users/qiemem/orgs","repos_url":"https://api.github.com/users/qiemem/repos","events_url":"https://api.github.com/users/qiemem/events{/privacy}","received_events_url":"https://api.github.com/users/qiemem/received_events","type":"User","site_admin":false},"created_at":"2018-08-02T14:28:47Z","updated_at":"2018-08-02T14:28:47Z","author_association":"MEMBER","body":"Just to make sure the information is preserved, there are a couple reasons why `ls:ask` and `ls:of` work the way they do. First, note that `ls:ask` is actually non-deterministic: when asking multiple models, it will typically run things in parallel. `ls:of` always returns ordered results, but executes in a non-deterministic order as well. That said, when they don't run parallel, execution happens in order. Okay, with that out of the way, the reasons it works the way it does:\r\n\r\n- `ls:of` returns results in the order of the list so that you can have many models run a reporter in parallel and still be able to match up the results with the model. If we made `ls:of` return in random order, we would lose parallelism in cases where we want to know which model returned which result.\r\n- The user can't actually tell, in the vast majority of cases, what order `ls:ask` and `ls:of` *execute* in.  Randomness matters in normal `ask` and `of` because agents all share a world state that they can each modify directly. Since child models cannot directly affect the parent model, the order the models execute can't actually impact the behavior of the model (note I'm talking about order of execution here; order of `ls:of` results still can). The only way you can have the order of execution affect anything is through file IO.\r\n- `ls:ask` and `ls:of` run on lists, not sets. From a semantics perspective (rather than teleological), the randomness of `ask` and `of` derives from the randomness of agentsets. Thus, the right way to fix this would be to implement \"model sets\". But this would entail reimplementing the entirety of the agentset querying API, which just leads to a bloated API and lots of duplicated work between core and LS. It would be super cool if we could inherit from `api.AgentSet` or something and have everything just work, but we need to take `CodeBlock`s, not command or reporter blocks, since we need to compile the blocks in a different context.\r\n\r\nI think that's everything. I'll update this issue if I remember any other considerations."}}
{"actor":{"display_login":"qiemem"}}