@@ -96,7 +96,8 @@ function Primitive(v) { return new Tuple(new V( "<primitive>" ), new Env([[ "<pr
9696
9797const primitives = new Env ;
9898primitives . setThunk ( "trace" , new Tuple ( Primitive ( function ( v ) { console . info ( String ( v . term ) ) ; return v ; } ) , new Env ) ) ;
99- primitives . setThunk ( "Y" , new Tuple ( new L ( "f" , new A ( new L ( "x" , new A ( new V ( "f" ) , new A ( new V ( "x" ) , new V ( "x" ) ) ) ) , new L ( "x" , new A ( new V ( "f" ) , new A ( new V ( "x" ) , new V ( "x" ) ) ) ) ) ) , new Env ) ) ;
99+
100+ const Y = new L ( "f" , new A ( new L ( "x" , new A ( new V ( "f" ) , new A ( new V ( "x" ) , new V ( "x" ) ) ) ) , new L ( "x" , new A ( new V ( "f" ) , new A ( new V ( "x" ) , new V ( "x" ) ) ) ) ) ) ;
100101
101102function fromInt ( n ) { return fromIntWith ( ) ( n ) ; }
102103
@@ -195,7 +196,7 @@ function parseWith(cfg={}) {
195196 if ( verbosity >= "Concise" ) console . error ( `parse: while defining ${ name } = ${ term } ` ) ;
196197 throw new ReferenceError ( `undefined free variable ${ nm } ` ) ;
197198 }
198- } , new Tuple ( FV . has ( name ) ? new A ( env . getValue ( "Y" ) , new L ( name , term ) ) : term , new Env ) ) ;
199+ } , new Tuple ( FV . has ( name ) ? new A ( Y , new L ( name , term ) ) : term , new Env ) ) ;
199200 else if ( purity === "PureLC" )
200201 if ( FV . size ) {
201202 if ( verbosity >= "Concise" ) console . error ( `parse: while defining ${ name } = ${ term } ` ) ;
@@ -301,8 +302,6 @@ function parseWith(cfg={}) {
301302 const [ i , r ] = defn ( 0 ) ;
302303 if ( i === code . length ) {
303304 const [ name , term ] = r ;
304- if ( name == "Y" )
305- console . warn ( "<span style=\"color:orange\">redefining Y is NOT RECOMMENDED and you do so at your peril</span>" ) ;
306305 if ( config . verbosity >= "Loquacious" )
307306 console . debug ( `compiled ${ name } ${ config . verbosity >= "Verbose" ? ` = ${ term } ` : "" } ` ) ;
308307 return env . setThunk ( name , wrap ( name , term ) ) ;
0 commit comments