If you need a way to do your ``new``, this works:

    PREDICATE: no-news-class < tuple-class no-news eq? ;

    M: no-news-class new ... ;



On Sat, Aug 20, 2016 at 6:13 PM, fede s <elfeder...@yahoo.com.ar> wrote:

> Ah of course, that makes sense now! Such a newbie mistake :/
>
> Yes, I am aware of the conventions on constructor words, and use them
> myself.
>
> As to the why, there isn't a practical one really!
>
> The purpose was to separate and encapsulate the initialization details of
> the superclass, having new call an initialize method on the new instance.
> It's a "Smalltalk-ism" on my side...
>
>
> Thank you!
>
>
>
>
>
> El Sábado, 20 de agosto, 2016 2:23:06, John Benediktsson <mrj...@gmail.com>
> escribió:
>
>
> Well, when you specify ``M: no-news``, you are telling the system to
> dispatch off an instance of the ``no-news`` class.
>
> So this works as you expect in your example:
>
>     IN: scratchpad T{ no-news } new .
>     T{ no-news f "same one" }
>
> That's because ``no-news`` is a tuple-class:
>
>     IN: scratchpad no-news tuple-class? .
>     t
>
> But not a ``no-news``:
>
>     IN: scratchpad no-news no-news? .
>     f
>
> Why are you trying to override ``new``? Typically we just provide
> constructor words, either automatically generating with ``C: <no-news>
> no-news`` or using ``new`` or ``boa`` in a ``<no-news>`` word:
>
>     : <no-news> ( field -- no-news )
>         do-something-to-field no-news boa ;
>
> Hope that helps,
>
> John.
>
>
> On Fri, Aug 19, 2016 at 12:49 PM, fede s <elfeder...@yahoo.com.ar> wrote:
>
> Hi
>
> I see "new" is a generic word, with the regular behavior set as a method
> for object.
> I tried specializing it on other tuple class, but it didn't work.
>
>    TUPLE: no-news field ;
>    : same-one ( -- t ) T{ no-news f "same one" } ;
>   M: no-news new  drop same-one ;
>
> I expect this:
>
>   no-news new
>   ==>T{ no-news f "same one" }
>
> But i got this:
>   no-news new
>   ==>T{ no-news f f }
>
>   USE: generic
>    \ new order
>   ==> { tuple-class no-news }
>
>   no-news \ new lookup-method
>   ==> M\ no-news new
>
> I think there's something wrong here?
>
> ------------------------------ ------------------------------
> ------------------
>
> ______________________________ _________________
> Factor-talk mailing list
> Factor-talk@lists.sourceforge. net <Factor-talk@lists.sourceforge.net>
> https://lists.sourceforge.net/ lists/listinfo/factor-talk
> <https://lists.sourceforge.net/lists/listinfo/factor-talk>
>
>
>
>
>
------------------------------------------------------------------------------
_______________________________________________
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk

Reply via email to