On Friday, February 6, 2015 at 12:39:59 PM UTC-6, Jason Bertsche wrote:
>
> Does it complicate the NetLogo language, though, if agentset primitives 
> knew how to deal with "agentbags".  Maybe there's something I'm not seeing.
>
>
> Bags and sets are two things that you can use very similarly, but they can 
> lead to very different behavior in a model.  If someone is writing code 
> that deals with bags and sets, there will be cognitive overhead to keeping 
> track of which variables hold which of the structures (i.e. agentsets or 
> agentbags), and knowing the difference between the two structures, and 
> knowing when to use which structure.  Not saying that it's the end of the 
> world, but I think added cognitive overhead is something that's important 
> to take into consideration—especially in a language like NetLogo that aims 
> to have a low barrier to entry.
>
> Regarding debugging, if you're in a situation where you think you have an 
> agentset but truly have an agentbag (or vice versa), figuring out why your 
> model is misbehaving might not be so easy.  In fact, you might never 
> realize at all!  I think the reason that this isn't currently a problem in 
> NetLogo is because all of the NetLogo collections—all two of them, plus 
> those provided by extensions—use a very noticeably different set of 
> primitives.  There's some overlap in the vocabularies of lists and 
> agentsets, but not a whole lot.
>

Yeah, I see what you're saying.  Those are really good points.

So I suppose that NetLogo is trying to satisfy two poles of a continuum: 
the entry level people, and experienced modelers.  And one of the beautiful 
things about it is that it does both well for a broad range of kinds of 
models, thus allowing for an easy learning path from one end to the other.  
For its target modeling domains, nothing does better at this tradeoff.  
Maybe the "high" end is pushing on NetLogo to develop more flexibility, 
recently.    (I'm not really at the high end--more like the middle.)  If 
NetLogo became difficult to learn, then someone would have to invent a new 
modeling tool that was easier.

Putting aside all questions about ease of implementation, complexity of 
code, etc., hypothetically, maybe a good strategy would be to introduce 
agentbags only through an extension, with replacements for agentset 
commands, such as bag:ask, which don't work with agentsets  That way no one 
will use bags except when they really want them, and the bag: prefix will 
make the difference obvious.  If you want to apply these commands to an 
agentset, you would have to convert it to a bag with a command like 
bag:turtle-bag.   It would be nice if turtle-set would convert turtlebags
to turtlesets.  And if there were an equality predicate that could tell you 
that an agentset and an agentbag had exactly the same members.  Not saying 
this is easy....
 

-- 
You received this message because you are subscribed to the Google Groups 
"netlogo-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to