From db2f744f90eea9f9b115cb31a4d1790645f2d4ea Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Wed, 12 Nov 2008 22:10:34 -0600 Subject: [PATCH 1/7] redo random-bytes* with a better algorithm --- basis/random/random.factor | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/basis/random/random.factor b/basis/random/random.factor index 242a9b8f31..5c93606ab5 100755 --- a/basis/random/random.factor +++ b/basis/random/random.factor @@ -13,17 +13,13 @@ GENERIC: seed-random ( tuple seed -- ) GENERIC: random-32* ( tuple -- r ) GENERIC: random-bytes* ( n tuple -- byte-array ) - - M: object random-bytes* ( n tuple -- byte-array ) - [ [ 4 /i ] keep adjust-random ] dip - over 4 * - [ '[ _ random-32* 4 >le _ push-all ] times ] keep ; + [ [ ] keep 4 /mod ] dip tuck + [ pick '[ _ random-32* 4 >le _ push-all ] times ] + [ + over zero? + [ 2drop ] [ random-32* 4 >le swap head over push-all ] if + ] 2bi* ; M: object random-32* ( tuple -- r ) 4 random-bytes* le> ; @@ -37,15 +33,13 @@ M: f random-bytes* ( n obj -- * ) no-random-number-generator ; M: f random-32* ( obj -- * ) no-random-number-generator ; : random-bytes ( n -- byte-array ) - [ - dup adjust-random random-generator get random-bytes* - ] keep head-slice >byte-array ; + random-generator get random-bytes* ; bignum ] + [ random-bytes >byte-array byte-array>bignum ] [ 3 shift 2^ ] bi / * >integer ; PRIVATE> From 6d44e383b358ea56f20ac2c0d8099e461c8972b3 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Thu, 13 Nov 2008 14:27:28 -0600 Subject: [PATCH 2/7] add rc files to scaffold since it's hard to create a file named .foo on windows --- basis/tools/scaffold/scaffold.factor | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/basis/tools/scaffold/scaffold.factor b/basis/tools/scaffold/scaffold.factor index e1076775fa..2811801266 100644 --- a/basis/tools/scaffold/scaffold.factor +++ b/basis/tools/scaffold/scaffold.factor @@ -263,3 +263,12 @@ SYMBOL: examples-flag [ example ] times "}" print ] with-variable ; + +: scaffold-rc ( path -- ) + [ touch-file ] [ "Click to edit: " write . ] bi ; + +: scaffold-factor-boot-rc ( -- ) + home ".factor-boot-rc" append-path scaffold-rc ; + +: scaffold-factor-rc ( -- ) + home ".factor-rc" append-path scaffold-rc ; From 069d5b17959bec9b615b28155741659fc9f1fa3c Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Thu, 13 Nov 2008 15:47:39 -0600 Subject: [PATCH 3/7] add etexteditor --- basis/editors/etexteditor/authors.txt | 1 + basis/editors/etexteditor/etexteditor.factor | 18 ++++++++++++++++++ basis/editors/etexteditor/summary.txt | 1 + basis/editors/etexteditor/tags.txt | 1 + 4 files changed, 21 insertions(+) create mode 100755 basis/editors/etexteditor/authors.txt create mode 100755 basis/editors/etexteditor/etexteditor.factor create mode 100755 basis/editors/etexteditor/summary.txt create mode 100755 basis/editors/etexteditor/tags.txt diff --git a/basis/editors/etexteditor/authors.txt b/basis/editors/etexteditor/authors.txt new file mode 100755 index 0000000000..7b1e3b7fa0 --- /dev/null +++ b/basis/editors/etexteditor/authors.txt @@ -0,0 +1 @@ +Kibleur Christophe \ No newline at end of file diff --git a/basis/editors/etexteditor/etexteditor.factor b/basis/editors/etexteditor/etexteditor.factor new file mode 100755 index 0000000000..1ce1004535 --- /dev/null +++ b/basis/editors/etexteditor/etexteditor.factor @@ -0,0 +1,18 @@ +! Copyright (C) 2008 Kibleur Christophe. +! See http://factorcode.org/license.txt for BSD license. +USING: editors io.files io.launcher kernel math.parser +namespaces sequences windows.shell32 make ; +IN: editors.etexteditor + +: etexteditor-path ( -- str ) + \ etexteditor-path get-global [ + program-files "e\\e.exe" append-path + ] unless* ; + +: etexteditor ( file line -- ) + [ + etexteditor-path , + "-n" swap number>string append , , + ] { } make run-detached drop ; + +[ etexteditor ] edit-hook set-global diff --git a/basis/editors/etexteditor/summary.txt b/basis/editors/etexteditor/summary.txt new file mode 100755 index 0000000000..46537003d9 --- /dev/null +++ b/basis/editors/etexteditor/summary.txt @@ -0,0 +1 @@ +etexteditor integration diff --git a/basis/editors/etexteditor/tags.txt b/basis/editors/etexteditor/tags.txt new file mode 100755 index 0000000000..6bf68304bb --- /dev/null +++ b/basis/editors/etexteditor/tags.txt @@ -0,0 +1 @@ +unportable From 8a25012b5500ecf10fb2f12b829227cdbfec375e Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Thu, 13 Nov 2008 16:07:01 -0600 Subject: [PATCH 4/7] fix line numbers with etexteditor --- basis/editors/etexteditor/etexteditor.factor | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/basis/editors/etexteditor/etexteditor.factor b/basis/editors/etexteditor/etexteditor.factor index 1ce1004535..38d3fde5b2 100755 --- a/basis/editors/etexteditor/etexteditor.factor +++ b/basis/editors/etexteditor/etexteditor.factor @@ -12,7 +12,7 @@ IN: editors.etexteditor : etexteditor ( file line -- ) [ etexteditor-path , - "-n" swap number>string append , , - ] { } make run-detached drop ; + [ , ] [ "--line" , number>string , ] bi* + ] { } make USE: prettyprint dup . run-detached drop ; [ etexteditor ] edit-hook set-global From a5c47ac294b42ea7acec6083c921d5d203dd2016 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Thu, 13 Nov 2008 16:09:03 -0600 Subject: [PATCH 5/7] remove debug, add -a option --- basis/editors/etexteditor/etexteditor.factor | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/basis/editors/etexteditor/etexteditor.factor b/basis/editors/etexteditor/etexteditor.factor index 38d3fde5b2..e6b85494ee 100755 --- a/basis/editors/etexteditor/etexteditor.factor +++ b/basis/editors/etexteditor/etexteditor.factor @@ -11,8 +11,8 @@ IN: editors.etexteditor : etexteditor ( file line -- ) [ - etexteditor-path , + etexteditor-path , "-a" , [ , ] [ "--line" , number>string , ] bi* - ] { } make USE: prettyprint dup . run-detached drop ; + ] { } make run-detached drop ; [ etexteditor ] edit-hook set-global From 8f2d1353c013de4409838ef5449dc843045d263a Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Thu, 13 Nov 2008 16:10:43 -0600 Subject: [PATCH 6/7] remove -a option... --- basis/editors/etexteditor/etexteditor.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basis/editors/etexteditor/etexteditor.factor b/basis/editors/etexteditor/etexteditor.factor index e6b85494ee..316bd24cfa 100755 --- a/basis/editors/etexteditor/etexteditor.factor +++ b/basis/editors/etexteditor/etexteditor.factor @@ -11,7 +11,7 @@ IN: editors.etexteditor : etexteditor ( file line -- ) [ - etexteditor-path , "-a" , + etexteditor-path , [ , ] [ "--line" , number>string , ] bi* ] { } make run-detached drop ; From afc071eaf8d6195d2154a27b42b9740bbbb3a89a Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Thu, 13 Nov 2008 16:15:57 -0600 Subject: [PATCH 7/7] fix docs --- basis/stack-checker/stack-checker-docs.factor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basis/stack-checker/stack-checker-docs.factor b/basis/stack-checker/stack-checker-docs.factor index a9df463703..f208178b10 100644 --- a/basis/stack-checker/stack-checker-docs.factor +++ b/basis/stack-checker/stack-checker-docs.factor @@ -27,7 +27,7 @@ ARTICLE: "inference-combinators" "Combinator stack effects" "Consider a combinator such as " { $link keep } ". The combinator itself does not have a stack effect, because it applies " { $link call } " to a potentially arbitrary quotation. However, since the combinator is declared " { $link POSTPONE: inline } ", a given usage of it can have a stack effect:" { $example "[ [ 2 + ] keep ] infer." "( object -- object object )" } "Another example is the " { $link compose } " combinator. Because it is decared " { $link POSTPONE: inline } ", we can infer the stack effect of applying " { $link call } " to the result of " { $link compose } ":" -{ $example "[ 2 [ + ] curry [ sq ] compose ] infer." "( -- object object )" } +{ $example "[ 2 [ + ] curry [ sq ] compose ] infer." "( -- object )" } "Incidentally, this example demonstrates that the stack effect of nested currying and composition can also be inferred." $nl "A general rule of thumb is that any word which applies " { $link call } " or " { $link curry } " to one of its inputs must be declared " { $link POSTPONE: inline } "."