<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi Erik,<div><br></div><div><div><div>On Nov 20, 2008, at 2:35 PM, &lt;<a href="mailto:zuurb078@planet.nl">zuurb078@planet.nl</a>> wrote:</div><blockquote type="cite"><div><div id="idOWAReplyText81401" dir="ltr"><div dir="ltr"><span class="Apple-style-span" style="-webkit-text-stroke-width: -1; ">&nbsp;</span></div> <div dir="ltr"><font face="Arial" size="2">Clean already has modest ways to split off many unique objects off of one 'mother' object and at the end recombine them: You can open many unique files based on one unique file system. This is easily implemented because there is only one filesystem: whenever you close a unique file, you can be sure that it is closed into the right filesystem.</font></div> <div dir="ltr"><font face="Arial" size="2"></font>&nbsp;</div> <div dir="ltr"><font face="Arial" size="2">But this is not a general feature that you could for instance apply to a unique array. A difficulty is that when 'closing' a part of the unique array split off earlier, you should close it into the same mother-array. There is no static test the compiler can apply to ensure this. Also, in case of an array, when you split off unique sub-arrays, they should be non overlapping. The compiler cannot test this in general.</font></div></div></div></blockquote><div><br></div><div>The compiler does not need to test this. It just needs to trust a standard construct that does the splitting and recombining for you. Like, say, a parallel map.</div><div><br></div></div><div>I know nothing about simplified uniqueness typing, but here are a few thoughts w.r.t.&nbsp;parallelism&nbsp;(and hopefully still right):</div><div>* First of all, using the file system as an example distracts a bit from the issues in parallel processing. It is the real-world requirements that dictate that a file should be recombined (closed) in the file system that it came from. If we let go of these worldly concerns, things are different. I can remove a unique element from a unique array A and put it in another (unique) array B without ever recombining it it A again.</div><div>* There is no need to always create unique objects out of other unique things, nor do unique objects that derive from the same source need to be "disjunct", nor do they always need to be temporarily "removed" from their source. It is perfectly possible to create a number of unique copies of some array (unique or not) and hand these out to a number of parallel processes.</div><div>* It is also possible to have a number of parallel processes simultaneously construct (disjunct parts of) some unique structure. The only thing one needs to ensure, is that the single consumer of this unique structure cannot access it while it is being constructed, or at least that it cannot not access the parts that are being constructed until they are finished.</div><div><br></div><div>In the end, I expect that we will find that uniqueness typing does not really hinder parallel processing, but also that it does not play an important role in enabling/promoting it.</div><div><br></div><div>best regards,</div><div>Marco</div><div><br></div><div><blockquote type="cite"><div> <div dir="ltr"><br> <hr tabindex="-1"> <font face="Tahoma" size="2"><b>Van:</b> <a href="mailto:clean-list-bounces@science.ru.nl">clean-list-bounces@science.ru.nl</a> namens Jari-Matti Mäkelä<br><b>Verzonden:</b> do 20-11-2008 12:12<br><b>Aan:</b> <a href="mailto:clean-list@science.ru.nl">clean-list@science.ru.nl</a><br><b>Onderwerp:</b> [clean-list] Simplified uniqueness typing<br></font><br></div> <div><p><font size="2">Hi<br><br>are there any plans to adopt the simplified uniqueness typing system<br>(<a href="http://www.cs.tcd.ie/~devriese/pub/ifl07-paper.pdf">http://www.cs.tcd.ie/~devriese/pub/ifl07-paper.pdf</a>) in the coming versions of<br>Clean?<br><br>Another question - if Clean continues to support parallel/concurrent<br>programming some day, does uniqueness typing support dividing a massive<br>computational task to several threads and then combining the results or does<br>it disallow this. Are there alternative approaches to this problem?<br><br>_______________________________________________<br>clean-list mailing list<br><a href="mailto:clean-list@science.ru.nl">clean-list@science.ru.nl</a><br><a href="http://mailman.science.ru.nl/mailman/listinfo/clean-list">http://mailman.science.ru.nl/mailman/listinfo/clean-list</a><br></font></p></div></div>_______________________________________________<br>clean-list mailing list<br><a href="mailto:clean-list@science.ru.nl">clean-list@science.ru.nl</a><br>http://mailman.science.ru.nl/mailman/listinfo/clean-list<br></blockquote></div><br></div></body></html>