2018-03-08 19:44 GMT+01:00 Eliot Miranda <eliot.mira...@gmail.com>: > Hi Sven, > > On Mar 8, 2018, at 9:55 AM, Sven Van Caekenberghe <s...@stfx.eu> wrote: > > > > On 8 Mar 2018, at 17:58, Eliot Miranda <eliot.mira...@gmail.com> wrote: > > > Hi Stef, > > > following on from Sean, (+1000 for using ordinary quotes) > > > ’string’ collection of characters => ’string’ sequence of characters > > $a, Character space Two ways to create characters => $a, Character space > two ways to denote characters (or two ways to write characters; all other > explanations in this list are not capitalized; this shouldn't be either) > > exp1. exp2 expression separator => expr1. expr2 statement separator > > ; message cascade => expr doThis ; doThat semicolon - message cascade > (c.f. exp1. exp2 expression separator) > > ^ expr caret - returns a result from a method => ^ expr caret - return a > result from a method (or, ParcPlace preference, answer a result from a > method, since we're sending messages here) > > > ... > > A unary message is one with no arguments. => A unary message has no > arguments. (c.f. A binary message takes only one argument ...) > > ... > > Set new add: 4; add: 4 ; yourself ~> aSet => Set new add: 4; add: 4 ; > yourself ~> aSet(4) > > Dictionary new at: #a put: 'Alpha' ; yourself a Dictionary => Dictionary > new at: #a put: 'Alpha' ; yourself a Dictionary(#a->'Alpha' ) > > > and then in the Files and Stream section I would give two more examples of > exactly the same sequence that use the convenience APIs. This is the > existing text: > > > work := FileSystem disk workingDirectory. > > stream := (work / ’foo.txt’) writeStream. > > stream nextPutAll: ’Hello World’. > > stream close. > > stream := (work / ’foo.txt’) readStream. > > stream contents. ~> 'Hello World' > > stream close. > > > I would make it read > > > work := FileSystem disk workingDirectory. > > stream := (work / ’foo.txt’) writeStream. > > stream nextPutAll: ’Hello World’. > > stream close. > > stream := (work / ’foo.txt’) readStream. > > stream contents. ~> 'Hello World' > > stream close. > > > or, more simply > > > work := FileSystem disk workingDirectory. > > (work / ’foo.txt’) writeStreamDo: [ :fileStream | fileStream > nextPutAll: ’Hello World’ ]. > > (work / ’foo.txt’) readStreamDo: [ :fileStream | fileStream contents] > ~> 'Hello World' > > > or, more simply still > > > work := FileSystem disk workingDirectory. > > (work / ’foo.txt’) writeStreamDo: [ :fileStream | fileStream > nextPutAll: ’Hello World’ ]. > > (work / ’foo.txt’) contents > ~> 'Hello > World' > > > file := FileSystem disk workingDirectory / 'foo' , 'txt'. > file ensureDelete. > file writeStreamDo: [ :fileStream | fileStream nextPutAll: 'Hello World' ]. > file contents. > file delete. > > (to make it re-entrant and a bit more concise) > > > that suggests > > file := FileSystem disk workingDirectory / 'foo' , 'txt'. > file newWriteStreamDo: [ :fileStream | fileStream nextPutAll: 'Hello > World' ]. > file contents. > file delete. > > where newWriteStreamDo: includes the file ensureDelete, or better still a > truncation, which saves the effort of deletion but (I *think*) has the same > effect. > > Hi Eliot, not exactly the same effect wrt file access rights.
> > +1e10 for plain single quotes, VERY important. > > or if you can't make it fit, just give the last version > > > Finally, this seems to have fallen off the end: > > A simple, uniform and powerful model > > Pharo has a simple dynamically-typed object model: > > > Perhaps shrink the picture of the browser. You can save three lines by > writing > > OrderedCollection new > > add: 1; > > add: 2; > > add: 3. > > > as OrderedCollection new add: 1; add: 2; add: 3. > > And another by writing 2=2 ifTrue: [ Error signal: ’Help’ ]. on one line. > > > HTH > > > On Fri, Apr 8, 2016 at 12:56 PM, stepharo <steph...@free.fr> wrote: > > new cheatsheet for Pharo syntax. > > Any feedback is welcome > > > Stef > > > > > -- > > _,,,^..^,,,_ > > best, Eliot > > > >