[squeak-dev] The Trunk: Tests-ul.200.mcz

Frank Shearar frank.shearar at gmail.com
Sun Apr 28 09:35:11 UTC 2013


I don't really have the energy for re-arguing that point. In summary,
the primary argument against Smalltalk being an FPL is that the
community doesn't write functional code. Inefficient? Only because
noone's bothered making it efficient.

So I'm not going to argue any further, and instead continue pushing
Squeak in the direction of writing code functionally.

(Note that nothing in that SO argument even vaguely touches the actual
serious stuff, like "classes confound several issues that should be
orthogonal".)

frank

On 28 April 2013 01:13, Nicolas Cellier
<nicolas.cellier.aka.nice at gmail.com> wrote:
> Ah, yes, in a FPL it's another story...
> By the way Frank, sorry for
> http://stackoverflow.com/questions/3527753/why-is-smalltalk-not-a-functional-programming-language,
> Smalltalk if ever considered as a FPL, would not only be an impure FPL but
> also an inefficient one :(
>
>
> 2013/4/27 Levente Uzonyi <leves at elte.hu>
>>
>> On Sat, 27 Apr 2013, Frank Shearar wrote:
>>
>>> In Schlemiel's algorithm you have to traverse your string from the
>>> beginning. Here, the problem is that at every step you're making
>>> String after String after String that you just throw away.
>>>
>>> Unless perhaps you're suggesting that the Schlemielness comes from not
>>> doing things the way our particular garbage collector like to do
>>> things?
>>
>>
>> Your code looks right, and works well in a functional programming language
>> which has the required optimizations to run such code efficiently. But in
>> Smalltalk it creates 2n-1 intermediate strings, where the previous is the
>> prefix of the current one, so each one is longer than the previous, which
>> means that O(n^2) bytes are allocated, filled, read once, and then garbage
>> collected. This means that the runtime cost is also O(n^2).
>>
>>
>> Levente
>>
>>
>>>
>>> frank
>>>
>>> On 27 April 2013 22:08, Nicolas Cellier
>>> <nicolas.cellier.aka.nice at gmail.com> wrote:
>>>>
>>>> http://en.wikipedia.org/wiki/Schlemiel_the_Painter%27s_algorithm
>>>>
>>>>
>>>> 2013/4/27 <commits at source.squeak.org>
>>>>
>>>>> Levente Uzonyi uploaded a new version of Tests to project The Trunk:
>>>>> http://source.squeak.org/trunk/Tests-ul.200.mcz
>>>>>
>>>>> ==================== Summary ====================
>>>>>
>>>>> Name: Tests-ul.200
>>>>> Author: ul
>>>>> Time: 27 April 2013, 10:08:43.206 pm
>>>>> UUID: dfe70287-0768-42f9-97b7-d7ba6fbd6bb6
>>>>> Ancestors: Tests-fbs.199
>>>>>
>>>>> - avoid suboptimal string concatentation in ReleaseTest >>
>>>>> #testMethodsWithUnboundGlobals
>>>>>
>>>>> =============== Diff against Tests-fbs.199 ===============
>>>>>
>>>>> Item was changed:
>>>>>   ----- Method: ReleaseTest>>testMethodsWithUnboundGlobals (in category
>>>>> 'testing') -----
>>>>>   testMethodsWithUnboundGlobals
>>>>>         | unbound |
>>>>>         unbound := SystemNavigation default methodsWithUnboundGlobals.
>>>>>         Smalltalk cleanOutUndeclared.
>>>>> +       self assert: unbound isEmpty description: 'Unbound: ', unbound
>>>>> asCommaString!
>>>>> -       self assert: unbound isEmpty description: ('Unbound: ',
>>>>> (unbound
>>>>> reduce: [:acc :each | acc, ', ', each]))!
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>
>
>
>
>


More information about the Squeak-dev mailing list