Updating code to use CONSTANT: instead of : foo 123 ; inline

db4
Slava Pestov 2009-02-23 21:40:17 -06:00
parent f1d20719b2
commit eaad0c7660
51 changed files with 295 additions and 903 deletions

View File

@ -4,7 +4,7 @@ USING: http.client checksums checksums.md5 splitting assocs
kernel io.files bootstrap.image sequences io urls ; kernel io.files bootstrap.image sequences io urls ;
IN: bootstrap.image.download IN: bootstrap.image.download
: url URL" http://factorcode.org/images/latest/" ; CONSTANT: url URL" http://factorcode.org/images/latest/"
: download-checksums ( -- alist ) : download-checksums ( -- alist )
url "checksums.txt" >url derive-url http-get nip url "checksums.txt" >url derive-url http-get nip

View File

@ -72,9 +72,9 @@ C-ENUM:
CAIRO_STATUS_INVALID_STRIDE ; CAIRO_STATUS_INVALID_STRIDE ;
TYPEDEF: int cairo_content_t TYPEDEF: int cairo_content_t
: CAIRO_CONTENT_COLOR HEX: 1000 ; CONSTANT: CAIRO_CONTENT_COLOR HEX: 1000
: CAIRO_CONTENT_ALPHA HEX: 2000 ; CONSTANT: CAIRO_CONTENT_ALPHA HEX: 2000
: CAIRO_CONTENT_COLOR_ALPHA HEX: 3000 ; CONSTANT: CAIRO_CONTENT_COLOR_ALPHA HEX: 3000
TYPEDEF: void* cairo_write_func_t TYPEDEF: void* cairo_write_func_t
: cairo-write-func ( quot -- callback ) : cairo-write-func ( quot -- callback )

View File

@ -157,7 +157,7 @@ stand-alone
= (line | code | heading | list | table | paragraph | nl)* = (line | code | heading | list | table | paragraph | nl)*
;EBNF ;EBNF
: invalid-url "javascript:alert('Invalid URL in farkup');" ; CONSTANT: invalid-url "javascript:alert('Invalid URL in farkup');"
: check-url ( href -- href' ) : check-url ( href -- href' )
{ {

View File

@ -63,7 +63,7 @@ TUPLE: action rest init authorize display validate submit ;
: param ( name -- value ) : param ( name -- value )
params get at ; params get at ;
: revalidate-url-key "__u" ; CONSTANT: revalidate-url-key "__u"
: revalidate-url ( -- url/f ) : revalidate-url ( -- url/f )
revalidate-url-key param revalidate-url-key param

View File

@ -10,7 +10,7 @@ furnace.auth.providers
furnace.auth.login.permits ; furnace.auth.login.permits ;
IN: furnace.alloy IN: furnace.alloy
: state-classes { session aside conversation permit } ; inline CONSTANT: state-classes { session aside conversation permit }
: init-furnace-tables ( -- ) : init-furnace-tables ( -- )
state-classes ensure-tables state-classes ensure-tables

View File

@ -23,7 +23,7 @@ aside "ASIDES" {
{ "post-data" "POST_DATA" FACTOR-BLOB } { "post-data" "POST_DATA" FACTOR-BLOB }
} define-persistent } define-persistent
: aside-id-key "__a" ; CONSTANT: aside-id-key "__a"
TUPLE: asides < server-state-manager ; TUPLE: asides < server-state-manager ;

View File

@ -64,7 +64,7 @@ SYMBOL: capabilities
PRIVATE> PRIVATE>
: flashed-variables { description capabilities } ; CONSTANT: flashed-variables { description capabilities }
: login-failed ( -- * ) : login-failed ( -- * )
"invalid username or password" validation-error "invalid username or password" validation-error

View File

@ -3,9 +3,7 @@
USING: furnace.auth.providers kernel ; USING: furnace.auth.providers kernel ;
IN: furnace.auth.providers.null IN: furnace.auth.providers.null
TUPLE: no-users ; SINGLETON: no-users
: no-users T{ no-users } ;
M: no-users get-user 2drop f ; M: no-users get-user 2drop f ;

View File

@ -20,7 +20,7 @@ conversation "CONVERSATIONS" {
{ "session" "SESSION" BIG-INTEGER +not-null+ } { "session" "SESSION" BIG-INTEGER +not-null+ }
} define-persistent } define-persistent
: conversation-id-key "__c" ; CONSTANT: conversation-id-key "__c"
TUPLE: conversations < server-state-manager ; TUPLE: conversations < server-state-manager ;

View File

@ -73,7 +73,7 @@ TUPLE: sessions < server-state-manager domain verify? ;
[ session set ] [ save-session-after ] bi [ session set ] [ save-session-after ] bi
sessions get responder>> call-responder ; sessions get responder>> call-responder ;
: session-id-key "__s" ; CONSTANT: session-id-key "__s"
: verify-session ( session -- session ) : verify-session ( session -- session )
sessions get verify?>> [ sessions get verify?>> [

View File

@ -89,7 +89,7 @@ M: object modify-form drop f ;
[XML <input type="hidden" value=<-> name=<->/> XML] [XML <input type="hidden" value=<-> name=<->/> XML]
] [ drop ] if ; ] [ drop ] if ;
: nested-forms-key "__n" ; CONSTANT: nested-forms-key "__n"
: request-params ( request -- assoc ) : request-params ( request -- assoc )
dup method>> { dup method>> {
@ -131,7 +131,7 @@ M: object modify-form drop f ;
SYMBOL: exit-continuation SYMBOL: exit-continuation
: exit-with ( value -- ) : exit-with ( value -- * )
exit-continuation get continue-with ; exit-continuation get continue-with ;
: with-exit-continuation ( quot -- value ) : with-exit-continuation ( quot -- value )

View File

@ -18,7 +18,7 @@ tags [ H{ } clone ] initialize
: CHLOE: : CHLOE:
scan parse-definition define-chloe-tag ; parsing scan parse-definition define-chloe-tag ; parsing
: chloe-ns "http://factorcode.org/chloe/1.0" ; inline CONSTANT: chloe-ns "http://factorcode.org/chloe/1.0"
: chloe-name? ( name -- ? ) : chloe-name? ( name -- ? )
url>> chloe-ns = ; url>> chloe-ns = ;

View File

@ -4,12 +4,12 @@ USING: math.parser arrays io.encodings sequences kernel assocs
hashtables io.encodings.ascii generic parser classes.tuple words hashtables io.encodings.ascii generic parser classes.tuple words
words.symbol io io.files splitting namespaces math words.symbol io io.files splitting namespaces math
compiler.units accessors classes.singleton classes.mixin compiler.units accessors classes.singleton classes.mixin
io.encodings.iana ; io.encodings.iana fry ;
IN: io.encodings.8-bit IN: io.encodings.8-bit
<PRIVATE <PRIVATE
: mappings { CONSTANT: mappings {
! encoding-name iana-name file-name ! encoding-name iana-name file-name
{ "latin1" "ISO_8859-1:1987" "8859-1" } { "latin1" "ISO_8859-1:1987" "8859-1" }
{ "latin2" "ISO_8859-2:1987" "8859-2" } { "latin2" "ISO_8859-2:1987" "8859-2" }
@ -30,11 +30,10 @@ IN: io.encodings.8-bit
{ "windows-1252" "windows-1252" "CP1252" } { "windows-1252" "windows-1252" "CP1252" }
{ "ebcdic" "IBM037" "CP037" } { "ebcdic" "IBM037" "CP037" }
{ "mac-roman" "macintosh" "ROMAN" } { "mac-roman" "macintosh" "ROMAN" }
} ; }
: encoding-file ( file-name -- stream ) : encoding-file ( file-name -- stream )
"vocab:io/encodings/8-bit/" swap ".TXT" "vocab:io/encodings/8-bit/" ".TXT" surround ;
3append ;
: process-contents ( lines -- assoc ) : process-contents ( lines -- assoc )
[ "#" split1 drop ] map harvest [ "#" split1 drop ] map harvest
@ -42,7 +41,7 @@ IN: io.encodings.8-bit
: byte>ch ( assoc -- array ) : byte>ch ( assoc -- array )
256 replacement-char <array> 256 replacement-char <array>
[ [ swapd set-nth ] curry assoc-each ] keep ; [ '[ swap _ set-nth ] assoc-each ] keep ;
: ch>byte ( assoc -- newassoc ) : ch>byte ( assoc -- newassoc )
[ swap ] assoc-map >hashtable ; [ swap ] assoc-map >hashtable ;

View File

@ -63,7 +63,7 @@ SYMBOL: log-files
dup values [ try-dispose ] each dup values [ try-dispose ] each
clear-assoc ; clear-assoc ;
: keep-logs 10 ; CONSTANT: keep-logs 10
: ?delete-file ( path -- ) : ?delete-file ( path -- )
dup exists? [ delete-file ] [ drop ] if ; dup exists? [ delete-file ] [ drop ] if ;

View File

@ -45,13 +45,13 @@ PRIVATE>
first2 [ imaginary-part ] dip >rect 3array ; first2 [ imaginary-part ] dip >rect 3array ;
! Zero ! Zero
: q0 { 0 0 } ; CONSTANT: q0 { 0 0 }
! Units ! Units
: q1 { 1 0 } ; CONSTANT: q1 { 1 0 }
: qi { C{ 0 1 } 0 } ; CONSTANT: qi { C{ 0 1 } 0 }
: qj { 0 1 } ; CONSTANT: qj { 0 1 }
: qk { 0 C{ 0 1 } } ; CONSTANT: qk { 0 C{ 0 1 } }
! Euler angles ! Euler angles

View File

@ -993,8 +993,8 @@ FUNCTION: BOOL DuplicateHandle (
BOOL bInheritHandle, BOOL bInheritHandle,
DWORD dwOptions ) ; DWORD dwOptions ) ;
: DUPLICATE_CLOSE_SOURCE 1 ; CONSTANT: DUPLICATE_CLOSE_SOURCE 1
: DUPLICATE_SAME_ACCESS 2 ; CONSTANT: DUPLICATE_SAME_ACCESS 2
! FUNCTION: EncodePointer ! FUNCTION: EncodePointer
! FUNCTION: EncodeSystemPointer ! FUNCTION: EncodeSystemPointer

View File

@ -12,17 +12,17 @@ TYPEDEF: uchar KeyCode
! Reserved Resource and Constant Definitions ! Reserved Resource and Constant Definitions
: ParentRelative 1 ; CONSTANT: ParentRelative 1
: CopyFromParent 0 ; CONSTANT: CopyFromParent 0
: PointerWindow 0 ; CONSTANT: PointerWindow 0
: InputFocus 1 ; CONSTANT: InputFocus 1
: PointerRoot 1 ; CONSTANT: PointerRoot 1
: AnyPropertyType 0 ; CONSTANT: AnyPropertyType 0
: AnyKey 0 ; CONSTANT: AnyKey 0
: AnyButton 0 ; CONSTANT: AnyButton 0
: AllTemporary 0 ; CONSTANT: AllTemporary 0
: CurrentTime 0 ; CONSTANT: CurrentTime 0
: NoSymbol 0 ; CONSTANT: NoSymbol 0
! Key masks. Used as modifiers to GrabButton and GrabKey, results of QueryPointer, ! Key masks. Used as modifiers to GrabButton and GrabKey, results of QueryPointer,
! state in various key-, mouse-, and button-related events. ! state in various key-, mouse-, and button-related events.
@ -31,14 +31,14 @@ TYPEDEF: uchar KeyCode
! modifier names. Used to build a SetModifierMapping request or ! modifier names. Used to build a SetModifierMapping request or
! to read a GetModifierMapping request. These correspond to the ! to read a GetModifierMapping request. These correspond to the
! masks defined above. ! masks defined above.
: ShiftMapIndex 0 ; CONSTANT: ShiftMapIndex 0
: LockMapIndex 1 ; CONSTANT: LockMapIndex 1
: ControlMapIndex 2 ; CONSTANT: ControlMapIndex 2
: Mod1MapIndex 3 ; CONSTANT: Mod1MapIndex 3
: Mod2MapIndex 4 ; CONSTANT: Mod2MapIndex 4
: Mod3MapIndex 5 ; CONSTANT: Mod3MapIndex 5
: Mod4MapIndex 6 ; CONSTANT: Mod4MapIndex 6
: Mod5MapIndex 7 ; CONSTANT: Mod5MapIndex 7
! button masks. Used in same manner as Key masks above. Not to be confused ! button masks. Used in same manner as Key masks above. Not to be confused
@ -53,100 +53,100 @@ TYPEDEF: uchar KeyCode
! Notify modes ! Notify modes
: NotifyNormal 0 ; CONSTANT: NotifyNormal 0
: NotifyGrab 1 ; CONSTANT: NotifyGrab 1
: NotifyUngrab 2 ; CONSTANT: NotifyUngrab 2
: NotifyWhileGrabbed 3 ; CONSTANT: NotifyWhileGrabbed 3
: NotifyHint 1 ; ! for MotionNotify events CONSTANT: NotifyHint 1 ! for MotionNotify events
! Notify detail ! Notify detail
: NotifyAncestor 0 ; CONSTANT: NotifyAncestor 0
: NotifyVirtual 1 ; CONSTANT: NotifyVirtual 1
: NotifyInferior 2 ; CONSTANT: NotifyInferior 2
: NotifyNonlinear 3 ; CONSTANT: NotifyNonlinear 3
: NotifyNonlinearVirtual 4 ; CONSTANT: NotifyNonlinearVirtual 4
: NotifyPointer 5 ; CONSTANT: NotifyPointer 5
: NotifyPointerRoot 6 ; CONSTANT: NotifyPointerRoot 6
: NotifyDetailNone 7 ; CONSTANT: NotifyDetailNone 7
! Visibility notify ! Visibility notify
: VisibilityUnobscured 0 ; CONSTANT: VisibilityUnobscured 0
: VisibilityPartiallyObscured 1 ; CONSTANT: VisibilityPartiallyObscured 1
: VisibilityFullyObscured 2 ; CONSTANT: VisibilityFullyObscured 2
! Circulation request ! Circulation request
: PlaceOnTop 0 ; CONSTANT: PlaceOnTop 0
: PlaceOnBottom 1 ; CONSTANT: PlaceOnBottom 1
! protocol families ! protocol families
: FamilyInternet 0 ; ! IPv4 CONSTANT: FamilyInternet 0 ! IPv4
: FamilyDECnet 1 ; CONSTANT: FamilyDECnet 1
: FamilyChaos 2 ; CONSTANT: FamilyChaos 2
: FamilyInternet6 6 ; ! IPv6 CONSTANT: FamilyInternet6 6 ! IPv6
! authentication families not tied to a specific protocol ! authentication families not tied to a specific protocol
: FamilyServerInterpreted 5 ; CONSTANT: FamilyServerInterpreted 5
! Property notification ! Property notification
: PropertyNewValue 0 ; CONSTANT: PropertyNewValue 0
: PropertyDelete 1 ; CONSTANT: PropertyDelete 1
! Color Map notification ! Color Map notification
: ColormapUninstalled 0 ; CONSTANT: ColormapUninstalled 0
: ColormapInstalled 1 ; CONSTANT: ColormapInstalled 1
! GrabPointer, GrabButton, GrabKeyboard, GrabKey Modes ! GrabPointer, GrabButton, GrabKeyboard, GrabKey Modes
: GrabModeSync 0 ; CONSTANT: GrabModeSync 0
: GrabModeAsync 1 ; CONSTANT: GrabModeAsync 1
! GrabPointer, GrabKeyboard reply status ! GrabPointer, GrabKeyboard reply status
: GrabSuccess 0 ; CONSTANT: GrabSuccess 0
: AlreadyGrabbed 1 ; CONSTANT: AlreadyGrabbed 1
: GrabInvalidTime 2 ; CONSTANT: GrabInvalidTime 2
: GrabNotViewable 3 ; CONSTANT: GrabNotViewable 3
: GrabFrozen 4 ; CONSTANT: GrabFrozen 4
! AllowEvents modes ! AllowEvents modes
: AsyncPointer 0 ; CONSTANT: AsyncPointer 0
: SyncPointer 1 ; CONSTANT: SyncPointer 1
: ReplayPointer 2 ; CONSTANT: ReplayPointer 2
: AsyncKeyboard 3 ; CONSTANT: AsyncKeyboard 3
: SyncKeyboard 4 ; CONSTANT: SyncKeyboard 4
: ReplayKeyboard 5 ; CONSTANT: ReplayKeyboard 5
: AsyncBoth 6 ; CONSTANT: AsyncBoth 6
: SyncBoth 7 ; CONSTANT: SyncBoth 7
! Used in SetInputFocus, GetInputFocus ! Used in SetInputFocus, GetInputFocus
: RevertToNone ( -- n ) None ; : RevertToNone ( -- n ) None ;
: RevertToPointerRoot ( -- n ) PointerRoot ; : RevertToPointerRoot ( -- n ) PointerRoot ;
: RevertToParent 2 ; CONSTANT: RevertToParent 2
! ***************************************************************** ! *****************************************************************
! * ERROR CODES ! * ERROR CODES
! ***************************************************************** ! *****************************************************************
: Success 0 ; ! everything's okay CONSTANT: Success 0 ! everything's okay
: BadRequest 1 ; ! bad request code CONSTANT: BadRequest 1 ! bad request code
: BadValue 2 ; ! int parameter out of range CONSTANT: BadValue 2 ! int parameter out of range
: BadWindow 3 ; ! parameter not a Window CONSTANT: BadWindow 3 ! parameter not a Window
: BadPixmap 4 ; ! parameter not a Pixmap CONSTANT: BadPixmap 4 ! parameter not a Pixmap
: BadAtom 5 ; ! parameter not an Atom CONSTANT: BadAtom 5 ! parameter not an Atom
: BadCursor 6 ; ! parameter not a Cursor CONSTANT: BadCursor 6 ! parameter not a Cursor
: BadFont 7 ; ! parameter not a Font CONSTANT: BadFont 7 ! parameter not a Font
: BadMatch 8 ; ! parameter mismatch CONSTANT: BadMatch 8 ! parameter mismatch
: BadDrawable 9 ; ! parameter not a Pixmap or Window CONSTANT: BadDrawable 9 ! parameter not a Pixmap or Window
: BadAccess 10 ; ! depending on context: CONSTANT: BadAccess 10 ! depending on context:
! - key/button already grabbed ! - key/button already grabbed
! - attempt to free an illegal ! - attempt to free an illegal
! cmap entry ! cmap entry
@ -154,16 +154,16 @@ TYPEDEF: uchar KeyCode
! color map entry. ! color map entry.
! - attempt to modify the access control ! - attempt to modify the access control
! list from other than the local host. ! list from other than the local host.
: BadAlloc 11 ; ! insufficient resources CONSTANT: BadAlloc 11 ! insufficient resources
: BadColor 12 ; ! no such colormap CONSTANT: BadColor 12 ! no such colormap
: BadGC 13 ; ! parameter not a GC CONSTANT: BadGC 13 ! parameter not a GC
: BadIDChoice 14 ; ! choice not in range or already used CONSTANT: BadIDChoice 14 ! choice not in range or already used
: BadName 15 ; ! font or color name doesn't exist CONSTANT: BadName 15 ! font or color name doesn't exist
: BadLength 16 ; ! Request length incorrect CONSTANT: BadLength 16 ! Request length incorrect
: BadImplementation 17 ; ! server is defective CONSTANT: BadImplementation 17 ! server is defective
: FirstExtensionError 128 ; CONSTANT: FirstExtensionError 128
: LastExtensionError 255 ; CONSTANT: LastExtensionError 255
! ***************************************************************** ! *****************************************************************
! * WINDOW DEFINITIONS ! * WINDOW DEFINITIONS
@ -172,44 +172,44 @@ TYPEDEF: uchar KeyCode
! Window classes used by CreateWindow ! Window classes used by CreateWindow
! Note that CopyFromParent is already defined as 0 above ! Note that CopyFromParent is already defined as 0 above
: InputOutput 1 ; CONSTANT: InputOutput 1
: InputOnly 2 ; CONSTANT: InputOnly 2
! Used in CreateWindow for backing-store hint ! Used in CreateWindow for backing-store hint
: NotUseful 0 ; CONSTANT: NotUseful 0
: WhenMapped 1 ; CONSTANT: WhenMapped 1
: Always 2 ; CONSTANT: Always 2
! Used in ChangeSaveSet ! Used in ChangeSaveSet
: SetModeInsert 0 ; CONSTANT: SetModeInsert 0
: SetModeDelete 1 ; CONSTANT: SetModeDelete 1
! Used in ChangeCloseDownMode ! Used in ChangeCloseDownMode
: DestroyAll 0 ; CONSTANT: DestroyAll 0
: RetainPermanent 1 ; CONSTANT: RetainPermanent 1
: RetainTemporary 2 ; CONSTANT: RetainTemporary 2
! Window stacking method (in configureWindow) ! Window stacking method (in configureWindow)
: Above 0 ; CONSTANT: Above 0
: Below 1 ; CONSTANT: Below 1
: TopIf 2 ; CONSTANT: TopIf 2
: BottomIf 3 ; CONSTANT: BottomIf 3
: Opposite 4 ; CONSTANT: Opposite 4
! Circulation direction ! Circulation direction
: RaiseLowest 0 ; CONSTANT: RaiseLowest 0
: LowerHighest 1 ; CONSTANT: LowerHighest 1
! Property modes ! Property modes
: PropModeReplace 0 ; CONSTANT: PropModeReplace 0
: PropModePrepend 1 ; CONSTANT: PropModePrepend 1
: PropModeAppend 2 ; CONSTANT: PropModeAppend 2
! ***************************************************************** ! *****************************************************************
! * GRAPHICS DEFINITIONS ! * GRAPHICS DEFINITIONS
@ -217,62 +217,62 @@ TYPEDEF: uchar KeyCode
! LineStyle ! LineStyle
: LineSolid 0 ; CONSTANT: LineSolid 0
: LineOnOffDash 1 ; CONSTANT: LineOnOffDash 1
: LineDoubleDash 2 ; CONSTANT: LineDoubleDash 2
! capStyle ! capStyle
: CapNotLast 0 ; CONSTANT: CapNotLast 0
: CapButt 1 ; CONSTANT: CapButt 1
: CapRound 2 ; CONSTANT: CapRound 2
: CapProjecting 3 ; CONSTANT: CapProjecting 3
! joinStyle ! joinStyle
: JoinMiter 0 ; CONSTANT: JoinMiter 0
: JoinRound 1 ; CONSTANT: JoinRound 1
: JoinBevel 2 ; CONSTANT: JoinBevel 2
! fillStyle ! fillStyle
: FillSolid 0 ; CONSTANT: FillSolid 0
: FillTiled 1 ; CONSTANT: FillTiled 1
: FillStippled 2 ; CONSTANT: FillStippled 2
: FillOpaqueStippled 3 ; CONSTANT: FillOpaqueStippled 3
! fillRule ! fillRule
: EvenOddRule 0 ; CONSTANT: EvenOddRule 0
: WindingRule 1 ; CONSTANT: WindingRule 1
! subwindow mode ! subwindow mode
: ClipByChildren 0 ; CONSTANT: ClipByChildren 0
: IncludeInferiors 1 ; CONSTANT: IncludeInferiors 1
! SetClipRectangles ordering ! SetClipRectangles ordering
: Unsorted 0 ; CONSTANT: Unsorted 0
: YSorted 1 ; CONSTANT: YSorted 1
: YXSorted 2 ; CONSTANT: YXSorted 2
: YXBanded 3 ; CONSTANT: YXBanded 3
! CoordinateMode for drawing routines ! CoordinateMode for drawing routines
: CoordModeOrigin 0 ; ! relative to the origin CONSTANT: CoordModeOrigin 0 ! relative to the origin
: CoordModePrevious 1 ; ! relative to previous point CONSTANT: CoordModePrevious 1 ! relative to previous point
! Polygon shapes ! Polygon shapes
: Complex 0 ; ! paths may intersect CONSTANT: Complex 0 ! paths may intersect
: Nonconvex 1 ; ! no paths intersect, but not convex CONSTANT: Nonconvex 1 ! no paths intersect, but not convex
: Convex 2 ; ! wholly convex CONSTANT: Convex 2 ! wholly convex
! Arc modes for PolyFillArc ! Arc modes for PolyFillArc
: ArcChord 0 ; ! join endpoints of arc CONSTANT: ArcChord 0 ! join endpoints of arc
: ArcPieSlice 1 ; ! join endpoints to center of arc CONSTANT: ArcPieSlice 1 ! join endpoints to center of arc
! ***************************************************************** ! *****************************************************************
! * FONTS ! * FONTS
@ -280,10 +280,10 @@ TYPEDEF: uchar KeyCode
! used in QueryFont -- draw direction ! used in QueryFont -- draw direction
: FontLeftToRight 0 ; CONSTANT: FontLeftToRight 0
: FontRightToLeft 1 ; CONSTANT: FontRightToLeft 1
: FontChange 255 ; CONSTANT: FontChange 255
! ***************************************************************** ! *****************************************************************
! * IMAGING ! * IMAGING
@ -291,9 +291,9 @@ TYPEDEF: uchar KeyCode
! ImageFormat -- PutImage, GetImage ! ImageFormat -- PutImage, GetImage
: XYBitmap 0 ; ! depth 1, XYFormat CONSTANT: XYBitmap 0 ! depth 1, XYFormat
: XYPixmap 1 ; ! depth == drawable depth CONSTANT: XYPixmap 1 ! depth == drawable depth
: ZPixmap 2 ; ! depth == drawable depth CONSTANT: ZPixmap 2 ! depth == drawable depth
! ***************************************************************** ! *****************************************************************
! * COLOR MAP STUFF ! * COLOR MAP STUFF
@ -301,8 +301,8 @@ TYPEDEF: uchar KeyCode
! For CreateColormap ! For CreateColormap
: AllocNone 0 ; ! create map with no entries CONSTANT: AllocNone 0 ! create map with no entries
: AllocAll 1 ; ! allocate entire map writeable CONSTANT: AllocAll 1 ! allocate entire map writeable
! Flags used in StoreNamedColor, StoreColors ! Flags used in StoreNamedColor, StoreColors
@ -317,20 +317,20 @@ TYPEDEF: uchar KeyCode
! QueryBestSize Class ! QueryBestSize Class
: CursorShape 0 ; ! largest size that can be displayed CONSTANT: CursorShape 0 ! largest size that can be displayed
: TileShape 1 ; ! size tiled fastest CONSTANT: TileShape 1 ! size tiled fastest
: StippleShape 2 ; ! size stippled fastest CONSTANT: StippleShape 2 ! size stippled fastest
! ***************************************************************** ! *****************************************************************
! * KEYBOARD/POINTER STUFF ! * KEYBOARD/POINTER STUFF
! ***************************************************************** ! *****************************************************************
: AutoRepeatModeOff 0 ; CONSTANT: AutoRepeatModeOff 0
: AutoRepeatModeOn 1 ; CONSTANT: AutoRepeatModeOn 1
: AutoRepeatModeDefault 2 ; CONSTANT: AutoRepeatModeDefault 2
: LedModeOff 0 ; CONSTANT: LedModeOff 0
: LedModeOn 1 ; CONSTANT: LedModeOn 1
! masks for ChangeKeyboardControl ! masks for ChangeKeyboardControl
@ -343,33 +343,33 @@ TYPEDEF: uchar KeyCode
: KBKey ( -- n ) 6 2^ ; : KBKey ( -- n ) 6 2^ ;
: KBAutoRepeatMode ( -- n ) 7 2^ ; : KBAutoRepeatMode ( -- n ) 7 2^ ;
: MappingSuccess 0 ; CONSTANT: MappingSuccess 0
: MappingBusy 1 ; CONSTANT: MappingBusy 1
: MappingFailed 2 ; CONSTANT: MappingFailed 2
: MappingModifier 0 ; CONSTANT: MappingModifier 0
: MappingKeyboard 1 ; CONSTANT: MappingKeyboard 1
: MappingPointer 2 ; CONSTANT: MappingPointer 2
! ***************************************************************** ! *****************************************************************
! * SCREEN SAVER STUFF ! * SCREEN SAVER STUFF
! ***************************************************************** ! *****************************************************************
: DontPreferBlanking 0 ; CONSTANT: DontPreferBlanking 0
: PreferBlanking 1 ; CONSTANT: PreferBlanking 1
: DefaultBlanking 2 ; CONSTANT: DefaultBlanking 2
: DisableScreenSaver 0 ; CONSTANT: DisableScreenSaver 0
: DisableScreenInterval 0 ; CONSTANT: DisableScreenInterval 0
: DontAllowExposures 0 ; CONSTANT: DontAllowExposures 0
: AllowExposures 1 ; CONSTANT: AllowExposures 1
: DefaultExposures 2 ; CONSTANT: DefaultExposures 2
! for ForceScreenSaver ! for ForceScreenSaver
: ScreenSaverReset 0 ; CONSTANT: ScreenSaverReset 0
: ScreenSaverActive 1 ; CONSTANT: ScreenSaverActive 1
! ***************************************************************** ! *****************************************************************
! * HOSTS AND CONNECTIONS ! * HOSTS AND CONNECTIONS
@ -377,30 +377,30 @@ TYPEDEF: uchar KeyCode
! for ChangeHosts ! for ChangeHosts
: HostInsert 0 ; CONSTANT: HostInsert 0
: HostDelete 1 ; CONSTANT: HostDelete 1
! for ChangeAccessControl ! for ChangeAccessControl
: EnableAccess 1 ; CONSTANT: EnableAccess 1
: DisableAccess 0 ; CONSTANT: DisableAccess 0
! Display classes used in opening the connection ! Display classes used in opening the connection
! Note that the statically allocated ones are even numbered and the ! Note that the statically allocated ones are even numbered and the
! dynamically changeable ones are odd numbered ! dynamically changeable ones are odd numbered
: StaticGray 0 ; CONSTANT: StaticGray 0
: GrayScale 1 ; CONSTANT: GrayScale 1
: StaticColor 2 ; CONSTANT: StaticColor 2
: PseudoColor 3 ; CONSTANT: PseudoColor 3
: TrueColor 4 ; CONSTANT: TrueColor 4
: DirectColor 5 ; CONSTANT: DirectColor 5
! Byte order used in imageByteOrder and bitmapBitOrder ! Byte order used in imageByteOrder and bitmapBitOrder
: LSBFirst 0 ; CONSTANT: LSBFirst 0
: MSBFirst 1 ; CONSTANT: MSBFirst 1
! ***************************************************************** ! *****************************************************************
! * EXTENDED WINDOW MANAGER HINTS ! * EXTENDED WINDOW MANAGER HINTS

View File

@ -9,23 +9,23 @@ IN: x11.glx
LIBRARY: glx LIBRARY: glx
! Visual Config Attributes (glXGetConfig, glXGetFBConfigAttrib) ! Visual Config Attributes (glXGetConfig, glXGetFBConfigAttrib)
: GLX_USE_GL 1 ; ! support GLX rendering CONSTANT: GLX_USE_GL 1 ! support GLX rendering
: GLX_BUFFER_SIZE 2 ; ! depth of the color buffer CONSTANT: GLX_BUFFER_SIZE 2 ! depth of the color buffer
: GLX_LEVEL 3 ; ! level in plane stacking CONSTANT: GLX_LEVEL 3 ! level in plane stacking
: GLX_RGBA 4 ; ! true if RGBA mode CONSTANT: GLX_RGBA 4 ! true if RGBA mode
: GLX_DOUBLEBUFFER 5 ; ! double buffering supported CONSTANT: GLX_DOUBLEBUFFER 5 ! double buffering supported
: GLX_STEREO 6 ; ! stereo buffering supported CONSTANT: GLX_STEREO 6 ! stereo buffering supported
: GLX_AUX_BUFFERS 7 ; ! number of aux buffers CONSTANT: GLX_AUX_BUFFERS 7 ! number of aux buffers
: GLX_RED_SIZE 8 ; ! number of red component bits CONSTANT: GLX_RED_SIZE 8 ! number of red component bits
: GLX_GREEN_SIZE 9 ; ! number of green component bits CONSTANT: GLX_GREEN_SIZE 9 ! number of green component bits
: GLX_BLUE_SIZE 10 ; ! number of blue component bits CONSTANT: GLX_BLUE_SIZE 10 ! number of blue component bits
: GLX_ALPHA_SIZE 11 ; ! number of alpha component bits CONSTANT: GLX_ALPHA_SIZE 11 ! number of alpha component bits
: GLX_DEPTH_SIZE 12 ; ! number of depth bits CONSTANT: GLX_DEPTH_SIZE 12 ! number of depth bits
: GLX_STENCIL_SIZE 13 ; ! number of stencil bits CONSTANT: GLX_STENCIL_SIZE 13 ! number of stencil bits
: GLX_ACCUM_RED_SIZE 14 ; ! number of red accum bits CONSTANT: GLX_ACCUM_RED_SIZE 14 ! number of red accum bits
: GLX_ACCUM_GREEN_SIZE 15 ; ! number of green accum bits CONSTANT: GLX_ACCUM_GREEN_SIZE 15 ! number of green accum bits
: GLX_ACCUM_BLUE_SIZE 16 ; ! number of blue accum bits CONSTANT: GLX_ACCUM_BLUE_SIZE 16 ! number of blue accum bits
: GLX_ACCUM_ALPHA_SIZE 17 ; ! number of alpha accum bits CONSTANT: GLX_ACCUM_ALPHA_SIZE 17 ! number of alpha accum bits
TYPEDEF: XID GLXContextID TYPEDEF: XID GLXContextID
TYPEDEF: XID GLXPixmap TYPEDEF: XID GLXPixmap

View File

@ -34,7 +34,7 @@ SYMBOL: xim
XNResourceClass over 0 XCreateIC XNResourceClass over 0 XCreateIC
[ "XCreateIC() failed" throw ] unless* ; [ "XCreateIC() failed" throw ] unless* ;
: buf-size 100 ; CONSTANT: buf-size 100
SYMBOL: keybuf SYMBOL: keybuf
SYMBOL: keysym SYMBOL: keysym

View File

@ -4,20 +4,20 @@ USING: namespaces make kernel assocs sequences fry values
io.files io.encodings.binary xml.state ; io.files io.encodings.binary xml.state ;
IN: xml.entities IN: xml.entities
: entities-out CONSTANT: entities-out
H{ H{
{ CHAR: < "&lt;" } { CHAR: < "&lt;" }
{ CHAR: > "&gt;" } { CHAR: > "&gt;" }
{ CHAR: & "&amp;" } { CHAR: & "&amp;" }
} ; }
: quoted-entities-out CONSTANT: quoted-entities-out
H{ H{
{ CHAR: & "&amp;" } { CHAR: & "&amp;" }
{ CHAR: ' "&apos;" } { CHAR: ' "&apos;" }
{ CHAR: " "&quot;" } { CHAR: " "&quot;" }
{ CHAR: < "&lt;" } { CHAR: < "&lt;" }
} ; }
: escape-string-by ( str table -- escaped ) : escape-string-by ( str table -- escaped )
#! Convert <, >, &, ' and " to HTML entities. #! Convert <, >, &, ' and " to HTML entities.
@ -29,14 +29,14 @@ IN: xml.entities
: escape-quoted-string ( str -- newstr ) : escape-quoted-string ( str -- newstr )
quoted-entities-out escape-string-by ; quoted-entities-out escape-string-by ;
: entities CONSTANT: entities
H{ H{
{ "lt" CHAR: < } { "lt" CHAR: < }
{ "gt" CHAR: > } { "gt" CHAR: > }
{ "amp" CHAR: & } { "amp" CHAR: & }
{ "apos" CHAR: ' } { "apos" CHAR: ' }
{ "quot" CHAR: " } { "quot" CHAR: " }
} ; }
: with-entities ( entities quot -- ) : with-entities ( entities quot -- )
[ swap extra-entities set call ] with-scope ; inline [ swap extra-entities set call ] with-scope ; inline

View File

@ -290,7 +290,7 @@ M: quoteless-attr summary
TUPLE: attr-w/< < xml-error-at ; TUPLE: attr-w/< < xml-error-at ;
: attr-w/< ( value -- * ) : attr-w/< ( -- * )
\ attr-w/< xml-error-at throw ; \ attr-w/< xml-error-at throw ;
M: attr-w/< summary M: attr-w/< summary
@ -299,7 +299,7 @@ M: attr-w/< summary
TUPLE: text-w/]]> < xml-error-at ; TUPLE: text-w/]]> < xml-error-at ;
: text-w/]]> ( text -- * ) : text-w/]]> ( -- * )
\ text-w/]]> xml-error-at throw ; \ text-w/]]> xml-error-at throw ;
M: text-w/]]> summary M: text-w/]]> summary

View File

@ -7,7 +7,7 @@ arrays words quotations accessors math.parser backtrack assocs ;
IN: 24-game IN: 24-game
SYMBOL: commands SYMBOL: commands
: nop ; : nop ( -- ) ;
: do-something ( a b -- c ) { + - * } amb-execute ; : do-something ( a b -- c ) { + - * } amb-execute ;
: maybe-swap ( a b -- a b ) { nop swap } amb-execute ; : maybe-swap ( a b -- a b ) { nop swap } amb-execute ;
: some-rots ( a b c -- a b c ) : some-rots ( a b c -- a b c )

View File

@ -10,7 +10,7 @@ IN: benchmark.backtrack
! placing them on the stack, and applying the operations ! placing them on the stack, and applying the operations
! +, -, * and rot as many times as we wish. ! +, -, * and rot as many times as we wish.
: nop ; : nop ( -- ) ;
: do-something ( a b -- c ) : do-something ( a b -- c )
{ + - * } amb-execute ; { + - * } amb-execute ;
@ -42,7 +42,7 @@ MEMO: 24-from-4 ( a b c d -- ? )
] sigma ] sigma
] sigma ; ] sigma ;
: words { 24-from-1 24-from-2 24-from-3 24-from-4 } ; CONSTANT: words { 24-from-1 24-from-2 24-from-3 24-from-4 }
: backtrack-benchmark ( -- ) : backtrack-benchmark ( -- )
words [ reset-memoized ] each words [ reset-memoized ] each

View File

@ -10,8 +10,6 @@ CONSTANT: IC 29573
CONSTANT: initial-seed 42 CONSTANT: initial-seed 42
CONSTANT: line-length 60 CONSTANT: line-length 60
USE: math.private
: random ( seed -- n seed ) : random ( seed -- n seed )
>float IA * IC + IM mod [ IM /f ] keep ; inline >float IA * IC + IM mod [ IM /f ] keep ; inline
@ -19,7 +17,7 @@ HINTS: random fixnum ;
CONSTANT: ALU "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA" CONSTANT: ALU "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGACCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAATACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCAGCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGGAGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCCAGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA"
: IUB CONSTANT: IUB
{ {
{ CHAR: a 0.27 } { CHAR: a 0.27 }
{ CHAR: c 0.12 } { CHAR: c 0.12 }
@ -37,15 +35,15 @@ CONSTANT: ALU "GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGGGAGGCCGAGGCGGGCGGATCACC
{ CHAR: V 0.02 } { CHAR: V 0.02 }
{ CHAR: W 0.02 } { CHAR: W 0.02 }
{ CHAR: Y 0.02 } { CHAR: Y 0.02 }
} ; inline }
: homo-sapiens CONSTANT: homo-sapiens
{ {
{ CHAR: a 0.3029549426680 } { CHAR: a 0.3029549426680 }
{ CHAR: c 0.1979883004921 } { CHAR: c 0.1979883004921 }
{ CHAR: g 0.1975473066391 } { CHAR: g 0.1975473066391 }
{ CHAR: t 0.3015094502008 } { CHAR: t 0.3015094502008 }
} ; inline }
: make-cumulative ( freq -- chars floats ) : make-cumulative ( freq -- chars floats )
dup keys >byte-array dup keys >byte-array

View File

@ -8,13 +8,14 @@ hints ;
IN: benchmark.raytracer IN: benchmark.raytracer
! parameters ! parameters
: light
#! Normalized { -1 -3 2 }. ! Normalized { -1 -3 2 }.
CONSTANT: light
double-array{ double-array{
-0.2672612419124244 -0.2672612419124244
-0.8017837257372732 -0.8017837257372732
0.5345224838248488 0.5345224838248488
} ; inline }
CONSTANT: oversampling 4 CONSTANT: oversampling 4

View File

@ -10,7 +10,7 @@ SYMBOL: counter
SYMBOL: port-promise SYMBOL: port-promise
SYMBOL: server SYMBOL: server
: number-of-requests 1000 ; CONSTANT: number-of-requests 1000
: server-addr ( -- addr ) : server-addr ( -- addr )
"127.0.0.1" port-promise get ?promise <inet4> ; "127.0.0.1" port-promise get ?promise <inet4> ;

View File

@ -8,7 +8,7 @@ help.topics math.functions compiler.tree.optimizer
compiler.cfg.optimizer fry ; compiler.cfg.optimizer fry ;
IN: galois-talk IN: galois-talk
: galois-slides CONSTANT: galois-slides
{ {
{ $slide "Factor!" { $slide "Factor!"
{ $url "http://factorcode.org" } { $url "http://factorcode.org" }
@ -305,7 +305,7 @@ IN: galois-talk
"Factor has many cool things that I didn't talk about" "Factor has many cool things that I didn't talk about"
"Questions?" "Questions?"
} }
} ; }
: galois-talk ( -- ) galois-slides slides-window ; : galois-talk ( -- ) galois-slides slides-window ;

View File

@ -121,12 +121,12 @@ CONSTANT: hat-switch-matching-hash
: hat-switch? ( {usage-page,usage} -- ? ) : hat-switch? ( {usage-page,usage} -- ? )
{ 1 HEX: 39 } = ; inline { 1 HEX: 39 } = ; inline
: pov-values CONSTANT: pov-values
{ {
pov-up pov-up-right pov-right pov-down-right pov-up pov-up-right pov-right pov-down-right
pov-down pov-down-left pov-left pov-up-left pov-down pov-down-left pov-left pov-up-left
pov-neutral pov-neutral
} ; inline }
: button-value ( value -- f/(0,1] ) : button-value ( value -- f/(0,1] )
IOHIDValueGetIntegerValue dup zero? [ drop f ] when ; IOHIDValueGetIntegerValue dup zero? [ drop f ] when ;

View File

@ -8,7 +8,7 @@ help.topics math.functions compiler.tree.optimizer
compiler.cfg.optimizer fry ; compiler.cfg.optimizer fry ;
IN: google-tech-talk IN: google-tech-talk
: google-slides CONSTANT: google-slides
{ {
{ $slide "Factor!" { $slide "Factor!"
{ $url "http://factorcode.org" } { $url "http://factorcode.org" }
@ -562,7 +562,7 @@ IN: google-tech-talk
"Put your prejudices aside and give it a shot!" "Put your prejudices aside and give it a shot!"
} }
{ $slide "Questions?" } { $slide "Questions?" }
} ; }
: google-talk ( -- ) google-slides slides-window ; : google-talk ( -- ) google-slides slides-window ;

View File

@ -12,7 +12,7 @@ IN: irc.client
! Setup and running objects ! Setup and running objects
! ====================================== ! ======================================
: irc-port 6667 ; ! Default irc port CONSTANT: irc-port 6667 ! Default irc port
TUPLE: irc-profile server port nickname password ; TUPLE: irc-profile server port nickname password ;
C: <irc-profile> irc-profile C: <irc-profile> irc-profile

View File

@ -28,9 +28,9 @@ TUPLE: irc-tab < frame chat client window ;
: write-color ( str color -- ) : write-color ( str color -- )
foreground associate format ; foreground associate format ;
: dark-red T{ rgba f 0.5 0.0 0.0 1 } ; CONSTANT: dark-red T{ rgba f 0.5 0.0 0.0 1 }
: dark-green T{ rgba f 0.0 0.5 0.0 1 } ; CONSTANT: dark-green T{ rgba f 0.0 0.5 0.0 1 }
: dark-blue T{ rgba f 0.0 0.0 0.5 1 } ; CONSTANT: dark-blue T{ rgba f 0.0 0.0 0.5 1 }
: dot-or-parens ( string -- string ) : dot-or-parens ( string -- string )
[ "." ] [ "." ]

View File

@ -5,8 +5,8 @@ calendar locals strings ui.gadgets.buttons
combinators math.parser assocs threads ; combinators math.parser assocs threads ;
IN: joystick-demo IN: joystick-demo
: SIZE { 151 151 } ; CONSTANT: SIZE { 151 151 }
: INDICATOR-SIZE { 4 4 } ; CONSTANT: INDICATOR-SIZE { 4 4 }
: FREQUENCY ( -- f ) 30 recip seconds ; : FREQUENCY ( -- f ) 30 recip seconds ;
TUPLE: axis-gadget < gadget indicator z-indicator pov ; TUPLE: axis-gadget < gadget indicator z-indicator pov ;
@ -21,7 +21,7 @@ M: axis-gadget pref-dim* drop SIZE ;
: indicator-polygon ( -- polygon ) : indicator-polygon ( -- polygon )
{ 0 0 } INDICATOR-SIZE (rect-polygon) ; { 0 0 } INDICATOR-SIZE (rect-polygon) ;
: pov-polygons CONSTANT: pov-polygons
V{ V{
{ pov-neutral { { 70 75 } { 75 70 } { 80 75 } { 75 80 } } } { pov-neutral { { 70 75 } { 75 70 } { 80 75 } { 75 80 } } }
{ pov-up { { 70 65 } { 75 60 } { 80 65 } } } { pov-up { { 70 65 } { 75 60 } { 80 65 } } }
@ -32,7 +32,7 @@ M: axis-gadget pref-dim* drop SIZE ;
{ pov-down-left { { 67 90 } { 60 90 } { 60 83 } } } { pov-down-left { { 67 90 } { 60 90 } { 60 83 } } }
{ pov-left { { 65 70 } { 60 75 } { 65 80 } } } { pov-left { { 65 70 } { 60 75 } { 65 80 } } }
{ pov-up-left { { 67 60 } { 60 60 } { 60 67 } } } { pov-up-left { { 67 60 } { 60 60 } { 60 67 } } }
} ; }
: <indicator-gadget> ( color -- indicator ) : <indicator-gadget> ( color -- indicator )
indicator-polygon <polygon-gadget> ; indicator-polygon <polygon-gadget> ;

View File

@ -4,7 +4,7 @@ words arrays assocs math calendar fry alarms ui
ui.gadgets.borders ui.gestures ; ui.gadgets.borders ui.gestures ;
IN: key-caps IN: key-caps
: key-locations H{ CONSTANT: key-locations H{
{ key-escape { { 0 0 } { 10 10 } } } { key-escape { { 0 0 } { 10 10 } } }
{ key-f1 { { 20 0 } { 10 10 } } } { key-f1 { { 20 0 } { 10 10 } } }
@ -129,9 +129,9 @@ IN: key-caps
{ key-keypad-0 { { 190 55 } { 20 10 } } } { key-keypad-0 { { 190 55 } { 20 10 } } }
{ key-keypad-. { { 210 55 } { 10 10 } } } { key-keypad-. { { 210 55 } { 10 10 } } }
} ; }
: KEYBOARD-SIZE { 230 65 } ; CONSTANT: KEYBOARD-SIZE { 230 65 }
: FREQUENCY ( -- f ) 30 recip seconds ; : FREQUENCY ( -- f ) 30 recip seconds ;
TUPLE: key-caps-gadget < gadget keys alarm ; TUPLE: key-caps-gadget < gadget keys alarm ;

View File

@ -42,7 +42,7 @@ SYMBOL: def-hash-keys
set-alien-float alien-float set-alien-float alien-float
} ; } ;
: trivial-defs : trivial-defs ( -- seq )
{ {
[ drop ] [ 2array ] [ drop ] [ 2array ]
[ bitand ] [ bitand ]

View File

@ -1,7 +1,7 @@
USING: arrays kernel xml-rpc ; USING: arrays kernel xml-rpc ;
IN: lisppaste IN: lisppaste
: url "http://www.common-lisp.net:8185/RPC2" ; CONSTANT: url "http://www.common-lisp.net:8185/RPC2"
: channels ( -- seq ) : channels ( -- seq )
{ } "listchannels" url invoke-method ; { } "listchannels" url invoke-method ;

View File

@ -67,24 +67,24 @@ SYMBOL: stamp
: ?prepare-build-machine ( -- ) : ?prepare-build-machine ( -- )
builds/factor exists? [ prepare-build-machine ] unless ; builds/factor exists? [ prepare-build-machine ] unless ;
: load-everything-vocabs-file "load-everything-vocabs" ; CONSTANT: load-everything-vocabs-file "load-everything-vocabs"
: load-everything-errors-file "load-everything-errors" ; CONSTANT: load-everything-errors-file "load-everything-errors"
: test-all-vocabs-file "test-all-vocabs" ; CONSTANT: test-all-vocabs-file "test-all-vocabs"
: test-all-errors-file "test-all-errors" ; CONSTANT: test-all-errors-file "test-all-errors"
: help-lint-vocabs-file "help-lint-vocabs" ; CONSTANT: help-lint-vocabs-file "help-lint-vocabs"
: help-lint-errors-file "help-lint-errors" ; CONSTANT: help-lint-errors-file "help-lint-errors"
: boot-time-file "boot-time" ; CONSTANT: boot-time-file "boot-time"
: load-time-file "load-time" ; CONSTANT: load-time-file "load-time"
: compiler-errors-file "compiler-errors" ; CONSTANT: compiler-errors-file "compiler-errors"
: test-time-file "test-time" ; CONSTANT: test-time-file "test-time"
: help-lint-time-file "help-lint-time" ; CONSTANT: help-lint-time-file "help-lint-time"
: benchmark-time-file "benchmark-time" ; CONSTANT: benchmark-time-file "benchmark-time"
: html-help-time-file "html-help-time" ; CONSTANT: html-help-time-file "html-help-time"
: benchmarks-file "benchmarks" ; CONSTANT: benchmarks-file "benchmarks"
SYMBOL: status SYMBOL: status

View File

@ -11,11 +11,11 @@ IN: math.analysis
CONSTANT: gamma-g6 5.15 CONSTANT: gamma-g6 5.15
: gamma-p6 CONSTANT: gamma-p6
{ {
2.50662827563479526904 225.525584619175212544 -268.295973841304927459 2.50662827563479526904 225.525584619175212544 -268.295973841304927459
80.9030806934622512966 -5.00757863970517583837 0.0114684895434781459556 80.9030806934622512966 -5.00757863970517583837 0.0114684895434781459556
} ; inline }
: gamma-z ( x n -- seq ) : gamma-z ( x n -- seq )
[ + recip ] with map 1.0 0 pick set-nth ; [ + recip ] with map 1.0 0 pick set-nth ;

View File

@ -4,7 +4,7 @@ arrays kernel random ui ui.gadgets ui.gadgets.canvas ui.render
math.order math.geometry.rect ; math.order math.geometry.rect ;
IN: maze IN: maze
: line-width 8 ; CONSTANT: line-width 8
SYMBOL: visited SYMBOL: visited

View File

@ -2,7 +2,7 @@ USING: slides help.markup math arrays hashtables namespaces
sequences kernel sequences parser memoize ; sequences kernel sequences parser memoize ;
IN: minneapolis-talk IN: minneapolis-talk
: minneapolis-slides CONSTANT: minneapolis-slides
{ {
{ $slide "What is Factor?" { $slide "What is Factor?"
"Dynamically typed, stack language" "Dynamically typed, stack language"
@ -175,7 +175,7 @@ IN: minneapolis-talk
"Mailing list: factor-talk@lists.sf.net" "Mailing list: factor-talk@lists.sf.net"
} }
{ $slide "Questions?" } { $slide "Questions?" }
} ; }
: minneapolis-talk ( -- ) minneapolis-slides slides-window ; : minneapolis-talk ( -- ) minneapolis-slides slides-window ;

View File

@ -1,116 +0,0 @@
- how to create a small module
- editor integration
- presentations
- module system
- copy and paste factoring, inverse
- help system
- tetris
- memoization
- editing inspector demo
- dynamic scope, lexical scope
Factor: contradictions?
-----------------------
Have our cake and eat it too
Research -vs- practical
High level -vs- fast
Interactive -vs- deployment
Factor from 10,000 feet
-----------------------
word: named function
vocabulary: module
quotation: anonymous function
classes, objects, etc.
The stack
---------
- Stack -vs- applicative
- Pass by reference, dynamically typed
- Stack languages: you can omit names where they're not needed
- More compositional style
- If you need to name things for clarity, you can:
lexical vars, dynamic vars, sequences, assocs, objects...
Functional programming
----------------------
Quotations
Curry
Continuations
Object-oriented programming
---------------------------
Generic words: sort of like open classes
Tuple reshaping
Editing inspector
Meta programming
----------------
Simple, orthogonal core
Why use a stack at all?
-----------------------
Nice idioms: 10 days ago
Copy and paste factoring
Easy meta-programming
Sequence operations correspond to functional operations:
- curry is adding at the front
- compose is append
UI
--
Written in Factor
renders with OpenGL
Windows, X11, Cocoa backends
You can call Windows, X11, Cocoa APIs directly
OpenGL 2.1 shaders, OpenAL 3D audio...
Tools
-----
Edit
Usages
Profiler
Easy to make your own tools
Implementation
--------------
Two compilers
Generational garbage collector
Non-blocking I/O
Hands on
--------
Community
---------
Factor started in 2003
About a dozen contributors
Handful of "core contributors"
Web site: http://factorcode.org
IRC: #concatenative on irc.freenode.net
Mailing list: factor-talk@lists.sf.net
C library interface
-------------------
Efficient
No need to write C code
Supports floats, structs, unions, ...
Function pointers, callbacks
Here is an example
TerminateProcess
process-handle TerminateProcess

View File

@ -4,8 +4,8 @@ IN: nehe.2
TUPLE: nehe2-gadget < gadget ; TUPLE: nehe2-gadget < gadget ;
: width 256 ; CONSTANT: width 256
: height 256 ; CONSTANT: height 256
: <nehe2-gadget> ( -- gadget ) : <nehe2-gadget> ( -- gadget )
nehe2-gadget new-gadget ; nehe2-gadget new-gadget ;

View File

@ -4,8 +4,8 @@ IN: nehe.3
TUPLE: nehe3-gadget < gadget ; TUPLE: nehe3-gadget < gadget ;
: width 256 ; CONSTANT: width 256
: height 256 ; CONSTANT: height 256
: <nehe3-gadget> ( -- gadget ) : <nehe3-gadget> ( -- gadget )
nehe3-gadget new-gadget ; nehe3-gadget new-gadget ;

View File

@ -5,8 +5,8 @@ IN: nehe.4
TUPLE: nehe4-gadget < gadget rtri rquad thread quit? ; TUPLE: nehe4-gadget < gadget rtri rquad thread quit? ;
: width 256 ; CONSTANT: width 256
: height 256 ; CONSTANT: height 256
: redraw-interval ( -- dt ) 10 milliseconds ; : redraw-interval ( -- dt ) 10 milliseconds ;
: <nehe4-gadget> ( -- gadget ) : <nehe4-gadget> ( -- gadget )

View File

@ -4,8 +4,8 @@ calendar ;
IN: nehe.5 IN: nehe.5
TUPLE: nehe5-gadget < gadget rtri rquad thread quit? ; TUPLE: nehe5-gadget < gadget rtri rquad thread quit? ;
: width 256 ; CONSTANT: width 256
: height 256 ; CONSTANT: height 256
: redraw-interval ( -- dt ) 10 milliseconds ; : redraw-interval ( -- dt ) 10 milliseconds ;
: <nehe5-gadget> ( -- gadget ) : <nehe5-gadget> ( -- gadget )

View File

@ -39,7 +39,7 @@ M: png-gadget ungraft* ( gadget -- )
: $tetris ( element -- ) : $tetris ( element -- )
drop [ <default-tetris> <tetris-gadget> gadget. ] ($block) ; drop [ <default-tetris> <tetris-gadget> gadget. ] ($block) ;
: otug-slides CONSTANT: otug-slides
{ {
{ $slide "Factor!" { $slide "Factor!"
{ $url "http://factorcode.org" } { $url "http://factorcode.org" }
@ -361,7 +361,7 @@ var price = (order == null ? null : order.price);"> }
"Factor has many cool things that I didn't talk about" "Factor has many cool things that I didn't talk about"
"Questions?" "Questions?"
} }
} ; }
: otug-talk ( -- ) otug-slides slides-window ; : otug-talk ( -- ) otug-slides slides-window ;

View File

@ -6,7 +6,7 @@ ui.gadgets.books ui.gadgets.panes ui.gestures ui.render
parser accessors colors ; parser accessors colors ;
IN: slides IN: slides
: stylesheet CONSTANT: stylesheet
H{ H{
{ default-span-style { default-span-style
H{ H{
@ -40,7 +40,7 @@ IN: slides
H{ { table-gap { 10 20 } } } H{ { table-gap { 10 20 } } }
} }
{ bullet "\u0000b7" } { bullet "\u0000b7" }
} ; }
: $title ( string -- ) : $title ( string -- )
[ H{ { font "sans-serif" } { font-size 48 } } format ] ($block) ; [ H{ { font "sans-serif" } { font-size 48 } } format ] ($block) ;

View File

@ -8,7 +8,7 @@ help.topics math.functions compiler.tree.optimizer
compiler.cfg.optimizer fry ; compiler.cfg.optimizer fry ;
IN: vpri-talk IN: vpri-talk
: vpri-slides CONSTANT: vpri-slides
{ {
{ $slide "Factor!" { $slide "Factor!"
{ $url "http://factorcode.org" } { $url "http://factorcode.org" }
@ -485,7 +485,7 @@ IN: vpri-talk
"Factor has many cool things that I didn't talk about" "Factor has many cool things that I didn't talk about"
"Questions?" "Questions?"
} }
} ; }
: vpri-talk ( -- ) vpri-slides slides-window ; : vpri-talk ( -- ) vpri-slides slides-window ;

View File

@ -18,8 +18,7 @@ format similar-ok language country site subscription license ;
first3 <result> first3 <result>
] map ; ] map ;
: yahoo-url ( -- str ) CONSTANT: yahoo-url URL" http://search.yahooapis.com/WebSearchService/V1/webSearch"
URL" http://search.yahooapis.com/WebSearchService/V1/webSearch" ;
:: param ( search url name quot -- search url ) :: param ( search url name quot -- search url )
search url search quot call search url search quot call
@ -49,8 +48,7 @@ format similar-ok language country site subscription license ;
"similar_ok" [ similar-ok>> ] bool-param "similar_ok" [ similar-ok>> ] bool-param
nip ; nip ;
: factor-id CONSTANT: factor-id "fRrVAKzV34GDyeRw6bUHDhEWHRedwfOC7e61wwXZLgGF80E67spxdQXuugBe2pgIevMmKwA-"
"fRrVAKzV34GDyeRw6bUHDhEWHRedwfOC7e61wwXZLgGF80E67spxdQXuugBe2pgIevMmKwA-" ;
: <search> ( query -- search ) : <search> ( query -- search )
search new search new

View File

@ -1,272 +0,0 @@
! Based on http://research.sun.com/people/mario/java_benchmarking/
! Ported by Factor by Slava Pestov
!
! Based on original version written in BCPL by Dr Martin Richards
! in 1981 at Cambridge University Computer Laboratory, England
! Java version: Copyright (C) 1995 Sun Microsystems, Inc.
! by Jonathan Gibbons.
! Outer loop added 8/7/96 by Alex Jacoby
USING: values kernel accessors math math.bitwise sequences
arrays combinators fry locals ;
IN: benchmark.richards
! Packets
TUPLE: packet link id kind a1 a2 ;
: BUFSIZE 4 ; inline
: <packet> ( link id kind -- packet )
packet new
swap >>kind
swap >>id
swap >>link
0 >>a1
BUFSIZE 0 <array> >>a2 ;
: last-packet ( packet -- last )
dup link>> [ last-packet ] [ ] ?if ;
: append-to ( packet list -- packet )
[ f >>link ] dip
[ tuck last-packet >>link drop ] when* ;
! Tasks
: I_IDLE 1 ; inline
: I_WORK 2 ; inline
: I_HANDLERA 3 ; inline
: I_HANDLERB 4 ; inline
: I_DEVA 5 ; inline
: I_DEVB 6 ; inline
! Packet types
: K_DEV 1000 ; inline
: K_WORK 1001 ; inline
: PKTBIT 1 ; inline
: WAITBIT 2 ; inline
: HOLDBIT 4 ; inline
: S_RUN 0 ; inline
: S_RUNPKT ( -- n ) { PKTBIT } flags ; inline
: S_WAIT ( -- n ) { WAITBIT } flags ; inline
: S_WAITPKT ( -- n ) { WAITBIT PKTBIT } flags ; inline
: S_HOLD ( -- n ) { HOLDBIT } flags ; inline
: S_HOLDPKT ( -- n ) { HOLDBIT PKTBIT } flags ; inline
: S_HOLDWAIT ( -- n ) { HOLDBIT WAITBIT } flags ; inline
: S_HOLDWAITPKT ( -- n ) { HOLDBIT WAITBIT PKTBIT } flags ; inline
: task-tab-size 10 ; inline
VALUE: task-tab
VALUE: task-list
VALUE: tracing
VALUE: hold-count
VALUE: qpkt-count
TUPLE: task link id pri wkq state ;
: new-task ( id pri wkq state class -- task )
new
swap >>state
swap >>wkq
swap >>pri
swap >>id
task-list >>link
dup to: task-list
dup dup id>> task-tab set-nth ; inline
GENERIC: fn ( packet task -- task )
: state-on ( task flag -- task )
'[ _ bitor ] change-state ; inline
: state-off ( task flag -- task )
'[ _ bitnot bitand ] change-state ; inline
: wait-task ( task -- task )
WAITBIT state-on ;
: hold ( task -- task )
hold-count 1+ to: hold-count
HOLDBIT state-on
link>> ;
: highest-priority ( t1 t2 -- t1/t2 )
[ [ pri>> ] bi@ > ] most ;
: find-tcb ( i -- task )
task-tab nth [ "Bad task" throw ] unless* ;
: release ( task i -- task )
find-tcb HOLDBIT state-off highest-priority ;
:: qpkt ( task pkt -- task )
[let | t [ pkt id>> find-tcb ] |
t [
qpkt-count 1+ to: qpkt-count
f pkt (>>link)
task id>> pkt (>>id)
t wkq>> [
pkt t wkq>> append-to t (>>wkq)
task
] [
pkt t (>>wkq)
t PKTBIT state-on drop
t task highest-priority
] if
] [ task ] if
] ;
: schedule-waitpkt ( task -- task pkt )
dup wkq>>
2dup link>> >>wkq drop
2dup S_RUNPKT S_RUN ? >>state drop ; inline
: schedule-run ( task pkt -- task )
swap fn ; inline
: schedule-wait ( task -- task )
link>> ; inline
: (schedule) ( task -- )
[
dup state>> {
{ S_WAITPKT [ schedule-waitpkt schedule-run (schedule) ] }
{ S_RUN [ f schedule-run (schedule) ] }
{ S_RUNPKT [ f schedule-run (schedule) ] }
{ S_WAIT [ schedule-wait (schedule) ] }
{ S_HOLD [ schedule-wait (schedule) ] }
{ S_HOLDPKT [ schedule-wait (schedule) ] }
{ S_HOLDWAIT [ schedule-wait (schedule) ] }
{ S_HOLDWAITPKT [ schedule-wait (schedule) ] }
[ 2drop ]
} case
] when* ;
: schedule ( -- )
task-list (schedule) ;
! Device task
TUPLE: device-task < task v1 ;
: <device-task> ( id pri wkq -- task )
dup S_WAITPKT S_WAIT ? device-task new-task ;
M:: device-task fn ( pkt task -- task )
pkt [
task dup v1>>
[ wait-task ]
[ [ f ] change-v1 swap qpkt ] if
] [ pkt task (>>v1) task hold ] if ;
TUPLE: handler-task < task workpkts devpkts ;
: <handler-task> ( id pri wkq -- task )
dup S_WAITPKT S_WAIT ? handler-task new-task ;
M:: handler-task fn ( pkt task -- task )
pkt [
task over kind>> K_WORK =
[ [ append-to ] change-workpkts ]
[ [ append-to ] change-devpkts ]
if drop
] when*
task workpkts>> [
[let* | devpkt [ task devpkts>> ]
workpkt [ task workpkts>> ]
count [ workpkt a1>> ] |
count BUFSIZE > [
workpkt link>> task (>>workpkts)
task workpkt qpkt
] [
devpkt [
devpkt link>> task (>>devpkts)
count workpkt a2>> nth devpkt (>>a1)
count 1+ workpkt (>>a1)
task devpkt qpkt
] [
task wait-task
] if
] if
]
] [ task wait-task ] if ;
! Idle task
TUPLE: idle-task < task { v1 fixnum } { v2 fixnum } ;
: <idle-task> ( i a1 a2 -- task )
[ 0 f S_RUN idle-task new-task ] 2dip
[ >>v1 ] [ >>v2 ] bi* ;
M: idle-task fn ( pkt task -- task )
nip
[ 1- ] change-v2
dup v2>> 0 = [ hold ] [
dup v1>> 1 bitand 0 = [
[ -1 shift ] change-v1
I_DEVA release
] [
[ -1 shift HEX: d008 bitor ] change-v1
I_DEVB release
] if
] if ;
! Work task
TUPLE: work-task < task { handler fixnum } { n fixnum } ;
: <work-task> ( id pri w -- work-task )
dup S_WAITPKT S_WAIT ? work-task new-task
I_HANDLERA >>handler
0 >>n ;
M:: work-task fn ( pkt task -- task )
pkt [
task [ I_HANDLERA = I_HANDLERB I_HANDLERA ? ] change-handler drop
task handler>> pkt (>>id)
0 pkt (>>a1)
BUFSIZE [| i |
task [ 1+ ] change-n drop
task n>> 26 > [ 1 task (>>n) ] when
task n>> 1 - CHAR: A + i pkt a2>> set-nth
] each
task pkt qpkt
] [ task wait-task ] if ;
! Main
: init ( -- )
task-tab-size f <array> to: task-tab
f to: tracing
0 to: hold-count
0 to: qpkt-count ;
: start ( -- )
I_IDLE 1 10000 <idle-task> drop
I_WORK 1000
f 0 K_WORK <packet> 0 K_WORK <packet>
<work-task> drop
I_HANDLERA 2000
f I_DEVA K_DEV <packet>
I_DEVA K_DEV <packet>
I_DEVA K_DEV <packet>
<handler-task> drop
I_HANDLERB 3000
f I_DEVB K_DEV <packet>
I_DEVB K_DEV <packet>
I_DEVB K_DEV <packet>
<handler-task> drop
I_DEVA 4000 f <device-task> drop
I_DEVB 4000 f <device-task> drop ;
: check ( -- )
qpkt-count 23246 assert=
hold-count 9297 assert= ;
: run ( -- )
init
start
schedule check ;

View File

@ -1,42 +0,0 @@
USING: kernel namespaces db.sql sequences math ;
IN: db.sql.tests
! TUPLE: person name age ;
: insert-1
{ insert
{
{ table "person" }
{ columns "name" "age" }
{ values "erg" 26 }
}
} ;
: update-1
{ update "person"
{ set { "name" "erg" }
{ "age" 6 } }
{ where { "age" 6 } }
} ;
: select-1
{ select
{ columns
"branchno"
{ count "staffno" as "mycount" }
{ sum "salary" as "mysum" } }
{ from "staff" "lol" }
{ where
{ "salary" > all
{ select
{ columns "salary" }
{ from "staff" }
{ where { "branchno" = "b003" } }
}
}
{ "branchno" > 3 } }
{ group-by "branchno" "lol2" }
{ having { count "staffno" > 1 } }
{ order-by "branchno" }
{ offset 40 }
{ limit 20 }
} ;

View File

@ -1,172 +0,0 @@
USING: kernel parser quotations classes.tuple words math.order
nmake namespaces sequences arrays combinators
prettyprint strings math.parser math symbols db ;
IN: db.sql
SYMBOLS: insert update delete select distinct columns from as
where group-by having order-by limit offset is-null desc all
any count avg table values ;
: input-spec, ( obj -- ) 1, ;
: output-spec, ( obj -- ) 2, ;
: input, ( obj -- ) 3, ;
: output, ( obj -- ) 4, ;
DEFER: sql%
: (sql-interleave) ( seq sep -- )
[ sql% ] curry [ sql% ] interleave ;
: sql-interleave ( seq str sep -- )
swap sql% (sql-interleave) ;
: sql-function, ( seq function -- )
sql% "(" sql% unclip sql% ")" sql% [ sql% ] each ;
: sql-where, ( seq -- )
[
[ second 0, ]
[ first 0, ]
[ third 1, \ ? 0, ] tri
] each ;
HOOK: sql-create db ( object -- )
M: db sql-create ( object -- )
drop
"create table" sql% ;
HOOK: sql-drop db ( object -- )
M: db sql-drop ( object -- )
drop
"drop table" sql% ;
HOOK: sql-insert db ( object -- )
M: db sql-insert ( object -- )
drop
"insert into" sql% ;
HOOK: sql-update db ( object -- )
M: db sql-update ( object -- )
drop
"update" sql% ;
HOOK: sql-delete db ( object -- )
M: db sql-delete ( object -- )
drop
"delete" sql% ;
HOOK: sql-select db ( object -- )
M: db sql-select ( object -- )
"select" sql% "," (sql-interleave) ;
HOOK: sql-columns db ( object -- )
M: db sql-columns ( object -- )
"," (sql-interleave) ;
HOOK: sql-from db ( object -- )
M: db sql-from ( object -- )
"from" "," sql-interleave ;
HOOK: sql-where db ( object -- )
M: db sql-where ( object -- )
"where" 0, sql-where, ;
HOOK: sql-group-by db ( object -- )
M: db sql-group-by ( object -- )
"group by" "," sql-interleave ;
HOOK: sql-having db ( object -- )
M: db sql-having ( object -- )
"having" "," sql-interleave ;
HOOK: sql-order-by db ( object -- )
M: db sql-order-by ( object -- )
"order by" "," sql-interleave ;
HOOK: sql-offset db ( object -- )
M: db sql-offset ( object -- )
"offset" sql% sql% ;
HOOK: sql-limit db ( object -- )
M: db sql-limit ( object -- )
"limit" sql% sql% ;
! GENERIC: sql-subselect db ( object -- )
! M: db sql-subselectselect ( object -- )
! "(select" sql% sql% ")" sql% ;
HOOK: sql-table db ( object -- )
M: db sql-table ( object -- )
sql% ;
HOOK: sql-set db ( object -- )
M: db sql-set ( object -- )
"set" "," sql-interleave ;
HOOK: sql-values db ( object -- )
M: db sql-values ( object -- )
"values(" sql% "," (sql-interleave) ")" sql% ;
HOOK: sql-count db ( object -- )
M: db sql-count ( object -- )
"count" sql-function, ;
HOOK: sql-sum db ( object -- )
M: db sql-sum ( object -- )
"sum" sql-function, ;
HOOK: sql-avg db ( object -- )
M: db sql-avg ( object -- )
"avg" sql-function, ;
HOOK: sql-min db ( object -- )
M: db sql-min ( object -- )
"min" sql-function, ;
HOOK: sql-max db ( object -- )
M: db sql-max ( object -- )
"max" sql-function, ;
: sql-array% ( array -- )
unclip
{
{ \ create [ sql-create ] }
{ \ drop [ sql-drop ] }
{ \ insert [ sql-insert ] }
{ \ update [ sql-update ] }
{ \ delete [ sql-delete ] }
{ \ select [ sql-select ] }
{ \ columns [ sql-columns ] }
{ \ from [ sql-from ] }
{ \ where [ sql-where ] }
{ \ group-by [ sql-group-by ] }
{ \ having [ sql-having ] }
{ \ order-by [ sql-order-by ] }
{ \ offset [ sql-offset ] }
{ \ limit [ sql-limit ] }
{ \ table [ sql-table ] }
{ \ set [ sql-set ] }
{ \ values [ sql-values ] }
{ \ count [ sql-count ] }
{ \ sum [ sql-sum ] }
{ \ avg [ sql-avg ] }
{ \ min [ sql-min ] }
{ \ max [ sql-max ] }
[ sql% [ sql% ] each ]
} case ;
ERROR: no-sql-match ;
: sql% ( obj -- )
{
{ [ dup string? ] [ 0, ] }
{ [ dup array? ] [ sql-array% ] }
{ [ dup number? ] [ number>string sql% ] }
{ [ dup symbol? ] [ unparse sql% ] }
{ [ dup word? ] [ unparse sql% ] }
{ [ dup quotation? ] [ call ] }
[ no-sql-match ]
} cond ;
: parse-sql ( obj -- sql in-spec out-spec in out )
[ [ sql% ] each ] { { } { } { } } nmake
[ " " join ] 2dip ;