From 9d3b5cb44b10b24e6610282f7ce28af976df122c Mon Sep 17 00:00:00 2001 From: John Benediktsson Date: Thu, 9 Feb 2017 16:24:05 -0800 Subject: [PATCH] vocabs: simplify M\ string require. --- core/vocabs/vocabs.factor | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/core/vocabs/vocabs.factor b/core/vocabs/vocabs.factor index 656f040c75..be71fa0804 100644 --- a/core/vocabs/vocabs.factor +++ b/core/vocabs/vocabs.factor @@ -139,28 +139,20 @@ PREDICATE: runnable-vocab < vocab INSTANCE: vocab-spec definition-mixin -: call-require-hook ( name -- ) - require-hook get call( name -- ) ; - GENERIC: require ( object -- ) M: vocab require name>> require ; M: vocab-link require name>> require ; -! When calling "foo.private" require, load "foo" instead, but only when -! "foo.private" does not exist. The reason for this is that stage1 bootstrap -! starts out with some .private vocabs that contain primitives, and -! loading the public vocabs would cause circularity issues. -M: string require ( vocab -- ) - dup ".private" ?tail [ - over lookup-vocab - [ 2drop ] - [ nip call-require-hook ] - if - ] [ - nip call-require-hook - ] if ; +! When calling "foo.private" require, load "foo" instead, but +! only when "foo.private" does not exist. The reason for this is +! that stage1 bootstrap starts out with some .private vocabs +! that contain primitives, and loading the public vocabs would +! cause circularity issues. +M: string require + [ ".private" ?tail ] keep swap [ lookup-vocab not ] when + [ require-hook get call( name -- ) ] [ drop ] if ; : load-vocab ( name -- vocab ) [ require ] [ lookup-vocab ] bi ; -- 2.34.1