On 14 March 2011 15:57, Alexey Zinger <[email protected]> wrote: > So what happens if you got a reference to a file that exists, and before > you get to use it, something else deletes the file? > > Alexey > > The same as it always did, attempting to open it for use would result in an error :) Opening a file is clearly not an action free from side-effects.
Think of a reference as being loosely equivalent to a path, but type-safe and encoding the capabilities of whatever lies at said path (at the time it was requested) > ------------------------------ > *From:* Kevin Wright <[email protected]> > *To:* [email protected] > *Cc:* Miroslav Pokorny <[email protected]> > *Sent:* Mon, March 14, 2011 11:00:48 AM > > *Subject:* Re: [The Java Posse] Some design questions (about immutability > and other stuff) > > > > On 14 March 2011 14:48, Miroslav Pokorny <[email protected]>wrote: > >> >> >> On Tue, Mar 15, 2011 at 1:46 AM, Alexey Zinger <[email protected]>wrote: >> >>> I see a small problem with the Scala stuff. Specifically: >>> >>> FileRef >>> - DirectoryFileRef >>> - StreamableFileRef >>> - AppendableFileRef >>> - RandomAccessFileRef >>> - NonExistantFileRef >>> >>> How does this address the scenario of a non-existent file reference >>> "becoming" existent by a side-effect of code elsewhere (maybe outside >>> current execution thread, or the JVM as a whole)? But in general, this just >>> feels like a losing battle to me -- trying to apply immutability principles >>> to I/O. Why? >>> >>> Alexey >>> >>> >> Its about naming, if your name is wrong your going to have a hard to time >> defending it. Calling an Elephant a Frog is never right. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "The Java Posse" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/javaposse?hl=en. >> > > > If you attempt to get a reference from a file that doesn't exist, you'll be > returned a NonExistentFileRef > That's IT. The thing is fixed, never to change again, it's the very > definition of immutable. > > If you later try to obtain a reference to the same path, and the file has > since been created, it'll work. > > The only reason that all file references aren't immutable is that > operations to retrieve the contents aren't guaranteed to always return the > same value. On a COW filesystem it's possible that you could grab an > immutable read-only reference. The file may be modified or deleted in the > interim, but you still have a handle to a previous snapshot, and can > guarantee the same output every single time you read it. > > -- > Kevin Wright > > gtalk / msn : [email protected] > <[email protected]>mail: [email protected] > vibe / skype: kev.lee.wright > quora: http://www.quora.com/Kevin-Wright > twitter: @thecoda > > "My point today is that, if we wish to count lines of code, we should not > regard them as "lines produced" but as "lines spent": the current > conventional wisdom is so foolish as to book that count on the wrong side of > the ledger" ~ Dijkstra > > -- > You received this message because you are subscribed to the Google Groups > "The Java Posse" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/javaposse?hl=en. > > -- > You received this message because you are subscribed to the Google Groups > "The Java Posse" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/javaposse?hl=en. > -- Kevin Wright gtalk / msn : [email protected] <[email protected]>mail: [email protected] vibe / skype: kev.lee.wright quora: http://www.quora.com/Kevin-Wright twitter: @thecoda "My point today is that, if we wish to count lines of code, we should not regard them as "lines produced" but as "lines spent": the current conventional wisdom is so foolish as to book that count on the wrong side of the ledger" ~ Dijkstra -- You received this message because you are subscribed to the Google Groups "The Java Posse" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/javaposse?hl=en.
