stack-checker.known-words: simpler infer-ndip and infer-builder.
							parent
							
								
									ce2b971b3b
								
							
						
					
					
						commit
						292e95f867
					
				|  | @ -125,13 +125,15 @@ M: declared-effect infer-call* | ||||||
|     [ [ known>> infer-call* ] keep ] with-effect-here check-declared-effect ; |     [ [ known>> infer-call* ] keep ] with-effect-here check-declared-effect ; | ||||||
| 
 | 
 | ||||||
| M: input-parameter infer-call* \ call unknown-macro-input ; | M: input-parameter infer-call* \ call unknown-macro-input ; | ||||||
|  | 
 | ||||||
| M: object infer-call* \ call bad-macro-input ; | M: object infer-call* \ call bad-macro-input ; | ||||||
| 
 | 
 | ||||||
| : infer-ndip ( word n -- ) | :: infer-ndip ( word n -- ) | ||||||
|     [ literals get ] 2dip |     literals get [ | ||||||
|     [ '[ _ def>> infer-quot-here ] ] |         word def>> infer-quot-here | ||||||
|     [ '[ _ [ pop ] dip [ infer->r infer-quot-here ] [ infer-r> ] bi ] ] bi* |     ] [ | ||||||
|     if-empty ; |         pop n [ infer->r infer-quot-here ] [ infer-r> ] bi | ||||||
|  |     ] if-empty ; | ||||||
| 
 | 
 | ||||||
| : infer-dip ( -- ) \ dip 1 infer-ndip ; | : infer-dip ( -- ) \ dip 1 infer-ndip ; | ||||||
| 
 | 
 | ||||||
|  | @ -145,12 +147,9 @@ M: object infer-call* \ call bad-macro-input ; | ||||||
| 
 | 
 | ||||||
| \ 3dip [ infer-3dip ] "special" set-word-prop | \ 3dip [ infer-3dip ] "special" set-word-prop | ||||||
| 
 | 
 | ||||||
| : infer-builder ( quot word -- ) | :: infer-builder ( quot word -- ) | ||||||
|     [ |     2 consume-d dup first2 quot call make-known | ||||||
|         [ 2 consume-d ] dip |     [ push-d ] [ 1array ] bi word #call, ; inline | ||||||
|         [ dup first2 ] dip call make-known |  | ||||||
|         [ push-d ] [ 1array ] bi |  | ||||||
|     ] dip #call, ; inline |  | ||||||
| 
 | 
 | ||||||
| : infer-curry ( -- ) [ <curried> ] \ curry infer-builder ; | : infer-curry ( -- ) [ <curried> ] \ curry infer-builder ; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue