Hello, and thanks for the reply! I was thinking about immediately calling a TYPED: word, as you suggested. The problem with this approach is that we are only enforcing the type check in an implementation of the interface, not in the interface itself. Any new implementation added afterwards is free to omit the type checks, which is not what I want in the first place.
Here's an example interface I'm currently meditating about: ``` SYMBOL: drive-repository HOOK: store-new-drive drive-repository ( drive -- ) HOOK: load-all-drives drive-repository ( -- drives ) HOOK: load-drive-by-id drive-repository ( id -- drive/f ) HOOK: store-updated-drive drive-repository ( drive -- ) ``` I want to be able to define it like this: ``` SYMBOL: drive-repository TYPED-HOOK: store-new-drive drive-repository ( drive: drive -- ) TYPED-HOOK: load-all-drives drive-repository ( -- drives: sequence ) TYPED-HOOK: load-drive-by-id drive-repository ( id: number -- drive: maybe{ drive } ) TYPED-HOOK: store-updated-drive drive-repository ( drive: drive -- ) ``` We have a dispatch mechanism that is taking the current value of the `drive-repository` symbol and calls the appropriate M:ethods of an implementation (which typically is a SINGLETON:). I'd like it to also check the type conformance prior to the call, and then check the result types when the method returns. Would that be possible to implement? What would it take, approximately, for me to do so? Would anyone else be interested in such functionality? 17.09.2017, 00:50, "Benjamin Pollack" <benja...@bitquabit.com>: >> On Sep 16, 2017, at 17:03, Alexander Ilin <ajs...@yandex.ru> wrote: >> >> Hello! >> >> Do we have TYPED: methods in Factor? >> Like, for when I want to have a M:ethod that performs type checks on the >> arguments other than the dispatch variable. > > We don’t, as far as I know; if you wanted to do this “right”, I believe you’d > have to extend the object system a bit. But it’d be pretty trivial (depending > on context) to just have your M: implementation immediately pass things off > to a TYPED: word and get most of the benefits for little cost. > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > Factor-talk mailing list > Factor-talk@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/factor-talk ---=====--- Александр ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Factor-talk mailing list Factor-talk@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/factor-talk