From: Jose A. Ortega Ruiz Date: Thu, 18 Dec 2008 23:24:23 +0000 (+0100) Subject: Conflict resolution X-Git-Tag: 0.94~1877^2~309 X-Git-Url: https://gitweb.factorcode.org/gitweb.cgi?p=factor.git;a=commitdiff_plain;h=ad87aa736dbb7347e4b1ee85e673701138ef4e53;hp=35039d01498824be1ad39bcd7cf704920bbd779e Conflict resolution --- diff --git a/basis/alias/alias-docs.factor b/basis/alias/alias-docs.factor deleted file mode 100644 index 3f2eee6460..0000000000 --- a/basis/alias/alias-docs.factor +++ /dev/null @@ -1,26 +0,0 @@ -! Copyright (C) 2008 Doug Coleman. -! See http://factorcode.org/license.txt for BSD license. -USING: kernel words help.markup help.syntax ; -IN: alias - -HELP: ALIAS: -{ $syntax "ALIAS: new-word existing-word" } -{ $values { "new-word" word } { "existing-word" word } } -{ $description "Creates a " { $snippet "new" } " inlined word that calls the " { $snippet "existing" } " word." } -{ $examples - { $example "USING: alias prettyprint sequences ;" - "IN: alias.test" - "ALIAS: sequence-nth nth" - "0 { 10 20 30 } sequence-nth ." - "10" - } -} ; - -ARTICLE: "alias" "Word aliasing" -"The " { $vocab-link "alias" } " vocabulary implements a way to make many different names for the same word. Although creating new names for words is generally frowned upon, aliases are useful for the Win32 API and other cases where words need to be renamed for symmetry." $nl -"Make a new word that aliases another word:" -{ $subsection define-alias } -"Make an alias at parse-time:" -{ $subsection POSTPONE: ALIAS: } ; - -ABOUT: "alias" diff --git a/basis/alias/alias.factor b/basis/alias/alias.factor deleted file mode 100644 index 79914527ff..0000000000 --- a/basis/alias/alias.factor +++ /dev/null @@ -1,19 +0,0 @@ -! Copyright (C) 2008 Slava Pestov. -! See http://factorcode.org/license.txt for BSD license. -USING: accessors words quotations kernel effects sequences -parser definitions ; -IN: alias - -PREDICATE: alias < word "alias" word-prop ; - -: define-alias ( new old -- ) - [ [ 1quotation ] [ stack-effect ] bi define-inline ] - [ drop t "alias" set-word-prop ] 2bi ; - -: ALIAS: CREATE-WORD scan-word define-alias ; parsing - -M: alias reset-word - [ call-next-method ] [ f "alias" set-word-prop ] bi ; - -M: alias stack-effect - def>> first stack-effect ; diff --git a/basis/alias/authors.txt b/basis/alias/authors.txt deleted file mode 100644 index 1901f27a24..0000000000 --- a/basis/alias/authors.txt +++ /dev/null @@ -1 +0,0 @@ -Slava Pestov diff --git a/basis/alias/summary.txt b/basis/alias/summary.txt deleted file mode 100644 index 15690a7b9b..0000000000 --- a/basis/alias/summary.txt +++ /dev/null @@ -1 +0,0 @@ -Defining multiple words with the same name diff --git a/basis/alien/syntax/syntax.factor b/basis/alien/syntax/syntax.factor index 15d82884f9..a02d2f3cb4 100644 --- a/basis/alien/syntax/syntax.factor +++ b/basis/alien/syntax/syntax.factor @@ -4,7 +4,7 @@ USING: accessors arrays alien alien.c-types alien.structs alien.arrays alien.strings kernel math namespaces parser sequences words quotations math.parser splitting grouping effects assocs combinators lexer strings.parser alien.parser -fry ; +fry vocabs.parser ; IN: alien.syntax : DLL" lexer get skip-blank parse-string dlopen parsed ; parsing diff --git a/basis/assoc-heaps/assoc-heaps-docs.factor b/basis/assoc-heaps/assoc-heaps-docs.factor new file mode 100644 index 0000000000..b148995cb8 --- /dev/null +++ b/basis/assoc-heaps/assoc-heaps-docs.factor @@ -0,0 +1,32 @@ +! Copyright (C) 2008 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: help.markup help.syntax io.streams.string assocs +heaps.private ; +IN: assoc-heaps + +HELP: +{ $values { "assoc" assoc } { "heap" heap } { "assoc-heap" assoc-heap } } +{ $description "Constructs a new " { $link assoc-heap } " from two existing data structures." } ; + +HELP: +{ $values { "unique-heap" assoc-heap } } +{ $description "Creates a new " { $link assoc-heap } " where the assoc is a hashtable and the heap is a max-heap. Popping an element from the heap leaves this element in the hashtable to ensure that the element will not be processed again." } ; + +HELP: +{ $values { "unique-heap" assoc-heap } } +{ $description "Creates a new " { $link assoc-heap } " where the assoc is a hashtable and the heap is a min-heap. Popping an element from the heap leaves this element in the hashtable to ensure that the element will not be processed again." } ; + +{ } related-words + +HELP: assoc-heap +{ $description "A data structure containing an assoc and a heap to get certain properties with better time constraints at the expense of more space and complexity. For instance, a hashtable and a heap can be combined into one assoc-heap to get a sorted data structure with O(1) lookup. Operations on assoc-heap may update both the assoc and the heap or leave them out of sync if it's advantageous." } ; + +ARTICLE: "assoc-heaps" "Associative heaps" +"The " { $vocab-link "assoc-heaps" } " vocabulary combines exists to synthesize data structures with better time properties than either of the two component data structures alone." $nl +"Associative heap constructor:" +{ $subsection } +"Unique heaps:" +{ $subsection } +{ $subsection } ; + +ABOUT: "assoc-heaps" diff --git a/basis/assoc-heaps/assoc-heaps-tests.factor b/basis/assoc-heaps/assoc-heaps-tests.factor new file mode 100644 index 0000000000..6ea3fe14a4 --- /dev/null +++ b/basis/assoc-heaps/assoc-heaps-tests.factor @@ -0,0 +1,4 @@ +! Copyright (C) 2008 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: tools.test assoc-heaps ; +IN: assoc-heaps.tests diff --git a/basis/assoc-heaps/assoc-heaps.factor b/basis/assoc-heaps/assoc-heaps.factor new file mode 100644 index 0000000000..a495aed626 --- /dev/null +++ b/basis/assoc-heaps/assoc-heaps.factor @@ -0,0 +1,30 @@ +! Copyright (C) 2008 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: accessors assocs hashtables heaps kernel ; +IN: assoc-heaps + +TUPLE: assoc-heap assoc heap ; + +C: assoc-heap + +: ( -- unique-heap ) + H{ } clone ; + +: ( -- unique-heap ) + H{ } clone ; + +M: assoc-heap heap-push* ( value key assoc-heap -- entry ) + pick over assoc>> key? [ + 3drop f + ] [ + [ assoc>> swapd set-at ] [ heap>> heap-push* ] 3bi + ] if ; + +M: assoc-heap heap-pop ( assoc-heap -- value key ) + heap>> heap-pop ; + +M: assoc-heap heap-peek ( assoc-heap -- value key ) + heap>> heap-peek ; + +M: assoc-heap heap-empty? ( assoc-heap -- value key ) + heap>> heap-empty? ; diff --git a/basis/assoc-heaps/authors.txt b/basis/assoc-heaps/authors.txt new file mode 100644 index 0000000000..b4bd0e7b35 --- /dev/null +++ b/basis/assoc-heaps/authors.txt @@ -0,0 +1 @@ +Doug Coleman \ No newline at end of file diff --git a/basis/bootstrap/stage2.factor b/basis/bootstrap/stage2.factor index d2b522581d..f0622726f5 100644 --- a/basis/bootstrap/stage2.factor +++ b/basis/bootstrap/stage2.factor @@ -1,11 +1,11 @@ ! Copyright (C) 2004, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: accessors init namespaces words io kernel.private math -memory continuations kernel io.files io.pathnames io.backend -system parser vocabs sequences vocabs.loader combinators -splitting source-files strings definitions assocs -compiler.errors compiler.units math.parser generic sets -command-line ; +USING: accessors init namespaces words words.symbol io +kernel.private math memory continuations kernel io.files +io.pathnames io.backend system parser vocabs sequences +vocabs.loader combinators splitting source-files strings +definitions assocs compiler.errors compiler.units math.parser +generic sets command-line ; IN: bootstrap.stage2 SYMBOL: core-bootstrap-time diff --git a/basis/cairo/authors.txt b/basis/cairo/authors.txt new file mode 100644 index 0000000000..68d35d192b --- /dev/null +++ b/basis/cairo/authors.txt @@ -0,0 +1,2 @@ +Sampo Vuori +Doug Coleman diff --git a/basis/cairo/cairo.factor b/basis/cairo/cairo.factor new file mode 100755 index 0000000000..da7f5a2f32 --- /dev/null +++ b/basis/cairo/cairo.factor @@ -0,0 +1,37 @@ +! Copyright (C) 2008 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: cairo.ffi kernel accessors sequences +namespaces fry continuations destructors ; +IN: cairo + +TUPLE: cairo-t alien ; +C: cairo-t +M: cairo-t dispose ( alien -- ) alien>> cairo_destroy ; + +TUPLE: cairo-surface-t alien ; +C: cairo-surface-t +M: cairo-surface-t dispose ( alien -- ) alien>> cairo_surface_destroy ; + +: check-cairo ( cairo_status_t -- ) + dup CAIRO_STATUS_SUCCESS = [ drop ] + [ cairo_status_to_string "Cairo error: " prepend throw ] if ; + +SYMBOL: cairo +: cr ( -- cairo ) cairo get ; inline + +: (with-cairo) ( cairo-t quot -- ) + [ alien>> cairo ] dip + '[ @ cr cairo_status check-cairo ] + with-variable ; inline + +: with-cairo ( cairo quot -- ) + [ ] dip '[ _ (with-cairo) ] with-disposal ; inline + +: (with-surface) ( cairo-surface-t quot -- ) + [ alien>> ] dip [ cairo_surface_status check-cairo ] bi ; inline + +: with-surface ( cairo_surface quot -- ) + [ ] dip '[ _ (with-surface) ] with-disposal ; inline + +: with-cairo-from-surface ( cairo_surface quot -- ) + '[ cairo_create _ with-cairo ] with-surface ; inline diff --git a/basis/cairo/ffi/ffi.factor b/basis/cairo/ffi/ffi.factor new file mode 100644 index 0000000000..d29a3fb097 --- /dev/null +++ b/basis/cairo/ffi/ffi.factor @@ -0,0 +1,948 @@ +! Copyright (c) 2007 Sampo Vuori +! Copyright (c) 2008 Matthew Willis +! +! Adapted from cairo.h, version 1.5.14 +! License: http://factorcode.org/license.txt + +USING: system combinators alien alien.syntax kernel +alien.c-types accessors sequences arrays ui.gadgets ; + +IN: cairo.ffi +<< "cairo" { + { [ os winnt? ] [ "libcairo-2.dll" ] } + { [ os macosx? ] [ "/opt/local/lib/libcairo.dylib" ] } + { [ os unix? ] [ "libcairo.so.2" ] } +} cond "cdecl" add-library >> + +LIBRARY: cairo + +FUNCTION: int cairo_version ( ) ; +FUNCTION: char* cairo_version_string ( ) ; + +TYPEDEF: int cairo_bool_t + +! I am leaving these and other void* types as opaque structures +TYPEDEF: void* cairo_t +TYPEDEF: void* cairo_surface_t + +C-STRUCT: cairo_matrix_t + { "double" "xx" } + { "double" "yx" } + { "double" "xy" } + { "double" "yy" } + { "double" "x0" } + { "double" "y0" } ; + +TYPEDEF: void* cairo_pattern_t + +TYPEDEF: void* cairo_destroy_func_t +: cairo-destroy-func ( quot -- callback ) + [ "void" { "void*" } "cdecl" ] dip alien-callback ; inline + +! See cairo.h for details +C-STRUCT: cairo_user_data_key_t + { "int" "unused" } ; + +TYPEDEF: int cairo_status_t +C-ENUM: + CAIRO_STATUS_SUCCESS + CAIRO_STATUS_NO_MEMORY + CAIRO_STATUS_INVALID_RESTORE + CAIRO_STATUS_INVALID_POP_GROUP + CAIRO_STATUS_NO_CURRENT_POINT + CAIRO_STATUS_INVALID_MATRIX + CAIRO_STATUS_INVALID_STATUS + CAIRO_STATUS_NULL_POINTER + CAIRO_STATUS_INVALID_STRING + CAIRO_STATUS_INVALID_PATH_DATA + CAIRO_STATUS_READ_ERROR + CAIRO_STATUS_WRITE_ERROR + CAIRO_STATUS_SURFACE_FINISHED + CAIRO_STATUS_SURFACE_TYPE_MISMATCH + CAIRO_STATUS_PATTERN_TYPE_MISMATCH + CAIRO_STATUS_INVALID_CONTENT + CAIRO_STATUS_INVALID_FORMAT + CAIRO_STATUS_INVALID_VISUAL + CAIRO_STATUS_FILE_NOT_FOUND + CAIRO_STATUS_INVALID_DASH + CAIRO_STATUS_INVALID_DSC_COMMENT + CAIRO_STATUS_INVALID_INDEX + CAIRO_STATUS_CLIP_NOT_REPRESENTABLE + CAIRO_STATUS_TEMP_FILE_ERROR + CAIRO_STATUS_INVALID_STRIDE ; + +TYPEDEF: int cairo_content_t +: CAIRO_CONTENT_COLOR HEX: 1000 ; +: CAIRO_CONTENT_ALPHA HEX: 2000 ; +: CAIRO_CONTENT_COLOR_ALPHA HEX: 3000 ; + +TYPEDEF: void* cairo_write_func_t +: cairo-write-func ( quot -- callback ) + [ "cairo_status_t" { "void*" "uchar*" "int" } "cdecl" ] dip alien-callback ; inline + +TYPEDEF: void* cairo_read_func_t +: cairo-read-func ( quot -- callback ) + [ "cairo_status_t" { "void*" "uchar*" "int" } "cdecl" ] dip alien-callback ; inline + +! Functions for manipulating state objects +FUNCTION: cairo_t* +cairo_create ( cairo_surface_t* target ) ; + +FUNCTION: cairo_t* +cairo_reference ( cairo_t* cr ) ; + +FUNCTION: void +cairo_destroy ( cairo_t* cr ) ; + +FUNCTION: uint +cairo_get_reference_count ( cairo_t* cr ) ; + +FUNCTION: void* +cairo_get_user_data ( cairo_t* cr, cairo_user_data_key_t* key ) ; + +FUNCTION: cairo_status_t +cairo_set_user_data ( cairo_t* cr, cairo_user_data_key_t* key, void* user_data, cairo_destroy_func_t destroy ) ; + +FUNCTION: void +cairo_save ( cairo_t* cr ) ; + +FUNCTION: void +cairo_restore ( cairo_t* cr ) ; + +FUNCTION: void +cairo_push_group ( cairo_t* cr ) ; + +FUNCTION: void +cairo_push_group_with_content ( cairo_t* cr, cairo_content_t content ) ; + +FUNCTION: cairo_pattern_t* +cairo_pop_group ( cairo_t* cr ) ; + +FUNCTION: void +cairo_pop_group_to_source ( cairo_t* cr ) ; + +! Modify state +TYPEDEF: int cairo_operator_t +C-ENUM: + CAIRO_OPERATOR_CLEAR + + CAIRO_OPERATOR_SOURCE + CAIRO_OPERATOR_OVER + CAIRO_OPERATOR_IN + CAIRO_OPERATOR_OUT + CAIRO_OPERATOR_ATOP + + CAIRO_OPERATOR_DEST + CAIRO_OPERATOR_DEST_OVER + CAIRO_OPERATOR_DEST_IN + CAIRO_OPERATOR_DEST_OUT + CAIRO_OPERATOR_DEST_ATOP + + CAIRO_OPERATOR_XOR + CAIRO_OPERATOR_ADD + CAIRO_OPERATOR_SATURATE ; + +FUNCTION: void +cairo_set_operator ( cairo_t* cr, cairo_operator_t op ) ; + +FUNCTION: void +cairo_set_source ( cairo_t* cr, cairo_pattern_t* source ) ; + +FUNCTION: void +cairo_set_source_rgb ( cairo_t* cr, double red, double green, double blue ) ; + +FUNCTION: void +cairo_set_source_rgba ( cairo_t* cr, double red, double green, double blue, double alpha ) ; + +FUNCTION: void +cairo_set_source_surface ( cairo_t* cr, cairo_surface_t* surface, double x, double y ) ; + +FUNCTION: void +cairo_set_tolerance ( cairo_t* cr, double tolerance ) ; + +TYPEDEF: int cairo_antialias_t +C-ENUM: + CAIRO_ANTIALIAS_DEFAULT + CAIRO_ANTIALIAS_NONE + CAIRO_ANTIALIAS_GRAY + CAIRO_ANTIALIAS_SUBPIXEL ; + +FUNCTION: void +cairo_set_antialias ( cairo_t* cr, cairo_antialias_t antialias ) ; + +TYPEDEF: int cairo_fill_rule_t +C-ENUM: + CAIRO_FILL_RULE_WINDING + CAIRO_FILL_RULE_EVEN_ODD ; + +FUNCTION: void +cairo_set_fill_rule ( cairo_t* cr, cairo_fill_rule_t fill_rule ) ; + +FUNCTION: void +cairo_set_line_width ( cairo_t* cr, double width ) ; + +TYPEDEF: int cairo_line_cap_t +C-ENUM: + CAIRO_LINE_CAP_BUTT + CAIRO_LINE_CAP_ROUND + CAIRO_LINE_CAP_SQUARE ; + +FUNCTION: void +cairo_set_line_cap ( cairo_t* cr, cairo_line_cap_t line_cap ) ; + +TYPEDEF: int cairo_line_join_t +C-ENUM: + CAIRO_LINE_JOIN_MITER + CAIRO_LINE_JOIN_ROUND + CAIRO_LINE_JOIN_BEVEL ; + +FUNCTION: void +cairo_set_line_join ( cairo_t* cr, cairo_line_join_t line_join ) ; + +FUNCTION: void +cairo_set_dash ( cairo_t* cr, double* dashes, int num_dashes, double offset ) ; + +FUNCTION: void +cairo_set_miter_limit ( cairo_t* cr, double limit ) ; + +FUNCTION: void +cairo_translate ( cairo_t* cr, double tx, double ty ) ; + +FUNCTION: void +cairo_scale ( cairo_t* cr, double sx, double sy ) ; + +FUNCTION: void +cairo_rotate ( cairo_t* cr, double angle ) ; + +FUNCTION: void +cairo_transform ( cairo_t* cr, cairo_matrix_t* matrix ) ; + +FUNCTION: void +cairo_set_matrix ( cairo_t* cr, cairo_matrix_t* matrix ) ; + +FUNCTION: void +cairo_identity_matrix ( cairo_t* cr ) ; + +FUNCTION: void +cairo_user_to_device ( cairo_t* cr, double* x, double* y ) ; + +FUNCTION: void +cairo_user_to_device_distance ( cairo_t* cr, double* dx, double* dy ) ; + +FUNCTION: void +cairo_device_to_user ( cairo_t* cr, double* x, double* y ) ; + +FUNCTION: void +cairo_device_to_user_distance ( cairo_t* cr, double* dx, double* dy ) ; + +! Path creation functions +FUNCTION: void +cairo_new_path ( cairo_t* cr ) ; + +FUNCTION: void +cairo_move_to ( cairo_t* cr, double x, double y ) ; + +FUNCTION: void +cairo_new_sub_path ( cairo_t* cr ) ; + +FUNCTION: void +cairo_line_to ( cairo_t* cr, double x, double y ) ; + +FUNCTION: void +cairo_curve_to ( cairo_t* cr, double x1, double y1, double x2, double y2, double x3, double y3 ) ; + +FUNCTION: void +cairo_arc ( cairo_t* cr, double xc, double yc, double radius, double angle1, double angle2 ) ; + +FUNCTION: void +cairo_arc_negative ( cairo_t* cr, double xc, double yc, double radius, double angle1, double angle2 ) ; + +FUNCTION: void +cairo_rel_move_to ( cairo_t* cr, double dx, double dy ) ; + +FUNCTION: void +cairo_rel_line_to ( cairo_t* cr, double dx, double dy ) ; + +FUNCTION: void +cairo_rel_curve_to ( cairo_t* cr, double dx1, double dy1, double dx2, double dy2, double dx3, double dy3 ) ; + +FUNCTION: void +cairo_rectangle ( cairo_t* cr, double x, double y, double width, double height ) ; + +FUNCTION: void +cairo_close_path ( cairo_t* cr ) ; + +FUNCTION: void +cairo_path_extents ( cairo_t* cr, double* x1, double* y1, double* x2, double* y2 ) ; + +! Painting functions +FUNCTION: void +cairo_paint ( cairo_t* cr ) ; + +FUNCTION: void +cairo_paint_with_alpha ( cairo_t* cr, double alpha ) ; + +FUNCTION: void +cairo_mask ( cairo_t* cr, cairo_pattern_t* pattern ) ; + +FUNCTION: void +cairo_mask_surface ( cairo_t* cr, cairo_surface_t* surface, double surface_x, double surface_y ) ; + +FUNCTION: void +cairo_stroke ( cairo_t* cr ) ; + +FUNCTION: void +cairo_stroke_preserve ( cairo_t* cr ) ; + +FUNCTION: void +cairo_fill ( cairo_t* cr ) ; + +FUNCTION: void +cairo_fill_preserve ( cairo_t* cr ) ; + +FUNCTION: void +cairo_copy_page ( cairo_t* cr ) ; + +FUNCTION: void +cairo_show_page ( cairo_t* cr ) ; + +! Insideness testing +FUNCTION: cairo_bool_t +cairo_in_stroke ( cairo_t* cr, double x, double y ) ; + +FUNCTION: cairo_bool_t +cairo_in_fill ( cairo_t* cr, double x, double y ) ; + +! Rectangular extents +FUNCTION: void +cairo_stroke_extents ( cairo_t* cr, double* x1, double* y1, double* x2, double* y2 ) ; + +FUNCTION: void +cairo_fill_extents ( cairo_t* cr, double* x1, double* y1, double* x2, double* y2 ) ; + +! Clipping +FUNCTION: void +cairo_reset_clip ( cairo_t* cr ) ; + +FUNCTION: void +cairo_clip ( cairo_t* cr ) ; + +FUNCTION: void +cairo_clip_preserve ( cairo_t* cr ) ; + +FUNCTION: void +cairo_clip_extents ( cairo_t* cr, double* x1, double* y1, double* x2, double* y2 ) ; + +C-STRUCT: cairo_rectangle_t + { "double" "x" } + { "double" "y" } + { "double" "width" } + { "double" "height" } ; + +C-STRUCT: cairo_rectangle_list_t + { "cairo_status_t" "status" } + { "cairo_rectangle_t*" "rectangles" } + { "int" "num_rectangles" } ; + +FUNCTION: cairo_rectangle_list_t* +cairo_copy_clip_rectangle_list ( cairo_t* cr ) ; + +FUNCTION: void +cairo_rectangle_list_destroy ( cairo_rectangle_list_t* rectangle_list ) ; + +! Font/Text functions + +TYPEDEF: void* cairo_scaled_font_t + +TYPEDEF: void* cairo_font_face_t + +C-STRUCT: cairo_glyph_t + { "ulong" "index" } + { "double" "x" } + { "double" "y" } ; + +C-STRUCT: cairo_text_extents_t + { "double" "x_bearing" } + { "double" "y_bearing" } + { "double" "width" } + { "double" "height" } + { "double" "x_advance" } + { "double" "y_advance" } ; + +C-STRUCT: cairo_font_extents_t + { "double" "ascent" } + { "double" "descent" } + { "double" "height" } + { "double" "max_x_advance" } + { "double" "max_y_advance" } ; + +TYPEDEF: int cairo_font_slant_t +C-ENUM: + CAIRO_FONT_SLANT_NORMAL + CAIRO_FONT_SLANT_ITALIC + CAIRO_FONT_SLANT_OBLIQUE ; + +TYPEDEF: int cairo_font_weight_t +C-ENUM: + CAIRO_FONT_WEIGHT_NORMAL + CAIRO_FONT_WEIGHT_BOLD ; + +TYPEDEF: int cairo_subpixel_order_t +C-ENUM: + CAIRO_SUBPIXEL_ORDER_DEFAULT + CAIRO_SUBPIXEL_ORDER_RGB + CAIRO_SUBPIXEL_ORDER_BGR + CAIRO_SUBPIXEL_ORDER_VRGB + CAIRO_SUBPIXEL_ORDER_VBGR ; + +TYPEDEF: int cairo_hint_style_t +C-ENUM: + CAIRO_HINT_STYLE_DEFAULT + CAIRO_HINT_STYLE_NONE + CAIRO_HINT_STYLE_SLIGHT + CAIRO_HINT_STYLE_MEDIUM + CAIRO_HINT_STYLE_FULL ; + +TYPEDEF: int cairo_hint_metrics_t +C-ENUM: + CAIRO_HINT_METRICS_DEFAULT + CAIRO_HINT_METRICS_OFF + CAIRO_HINT_METRICS_ON ; + +TYPEDEF: void* cairo_font_options_t + +FUNCTION: cairo_font_options_t* +cairo_font_options_create ( ) ; + +FUNCTION: cairo_font_options_t* +cairo_font_options_copy ( cairo_font_options_t* original ) ; + +FUNCTION: void +cairo_font_options_destroy ( cairo_font_options_t* options ) ; + +FUNCTION: cairo_status_t +cairo_font_options_status ( cairo_font_options_t* options ) ; + +FUNCTION: void +cairo_font_options_merge ( cairo_font_options_t* options, cairo_font_options_t* other ) ; + +FUNCTION: cairo_bool_t +cairo_font_options_equal ( cairo_font_options_t* options, cairo_font_options_t* other ) ; + +FUNCTION: ulong +cairo_font_options_hash ( cairo_font_options_t* options ) ; + +FUNCTION: void +cairo_font_options_set_antialias ( cairo_font_options_t* options, cairo_antialias_t antialias ) ; + +FUNCTION: cairo_antialias_t +cairo_font_options_get_antialias ( cairo_font_options_t* options ) ; + +FUNCTION: void +cairo_font_options_set_subpixel_order ( cairo_font_options_t* options, cairo_subpixel_order_t subpixel_order ) ; + +FUNCTION: cairo_subpixel_order_t +cairo_font_options_get_subpixel_order ( cairo_font_options_t* options ) ; + +FUNCTION: void +cairo_font_options_set_hint_style ( cairo_font_options_t* options, cairo_hint_style_t hint_style ) ; + +FUNCTION: cairo_hint_style_t +cairo_font_options_get_hint_style ( cairo_font_options_t* options ) ; + +FUNCTION: void +cairo_font_options_set_hint_metrics ( cairo_font_options_t* options, cairo_hint_metrics_t hint_metrics ) ; + +FUNCTION: cairo_hint_metrics_t +cairo_font_options_get_hint_metrics ( cairo_font_options_t* options ) ; + +! This interface is for dealing with text as text, not caring about the +! font object inside the the cairo_t. + +FUNCTION: void +cairo_select_font_face ( cairo_t* cr, char* family, cairo_font_slant_t slant, cairo_font_weight_t weight ) ; + +FUNCTION: void +cairo_set_font_size ( cairo_t* cr, double size ) ; + +FUNCTION: void +cairo_set_font_matrix ( cairo_t* cr, cairo_matrix_t* matrix ) ; + +FUNCTION: void +cairo_get_font_matrix ( cairo_t* cr, cairo_matrix_t* matrix ) ; + +FUNCTION: void +cairo_set_font_options ( cairo_t* cr, cairo_font_options_t* options ) ; + +FUNCTION: void +cairo_get_font_options ( cairo_t* cr, cairo_font_options_t* options ) ; + +FUNCTION: void +cairo_set_font_face ( cairo_t* cr, cairo_font_face_t* font_face ) ; + +FUNCTION: cairo_font_face_t* +cairo_get_font_face ( cairo_t* cr ) ; + +FUNCTION: void +cairo_set_scaled_font ( cairo_t* cr, cairo_scaled_font_t* scaled_font ) ; + +FUNCTION: cairo_scaled_font_t* +cairo_get_scaled_font ( cairo_t* cr ) ; + +FUNCTION: void +cairo_show_text ( cairo_t* cr, char* utf8 ) ; + +FUNCTION: void +cairo_show_glyphs ( cairo_t* cr, cairo_glyph_t* glyphs, int num_glyphs ) ; + +FUNCTION: void +cairo_text_path ( cairo_t* cr, char* utf8 ) ; + +FUNCTION: void +cairo_glyph_path ( cairo_t* cr, cairo_glyph_t* glyphs, int num_glyphs ) ; + +FUNCTION: void +cairo_text_extents ( cairo_t* cr, char* utf8, cairo_text_extents_t* extents ) ; + +FUNCTION: void +cairo_glyph_extents ( cairo_t* cr, cairo_glyph_t* glyphs, int num_glyphs, cairo_text_extents_t* extents ) ; + +FUNCTION: void +cairo_font_extents ( cairo_t* cr, cairo_font_extents_t* extents ) ; + +! Generic identifier for a font style + +FUNCTION: cairo_font_face_t* +cairo_font_face_reference ( cairo_font_face_t* font_face ) ; + +FUNCTION: void +cairo_font_face_destroy ( cairo_font_face_t* font_face ) ; + +FUNCTION: uint +cairo_font_face_get_reference_count ( cairo_font_face_t* font_face ) ; + +FUNCTION: cairo_status_t +cairo_font_face_status ( cairo_font_face_t* font_face ) ; + +TYPEDEF: int cairo_font_type_t +C-ENUM: + CAIRO_FONT_TYPE_TOY + CAIRO_FONT_TYPE_FT + CAIRO_FONT_TYPE_WIN32 + CAIRO_FONT_TYPE_QUARTZ ; + +FUNCTION: cairo_font_type_t +cairo_font_face_get_type ( cairo_font_face_t* font_face ) ; + +FUNCTION: void* +cairo_font_face_get_user_data ( cairo_font_face_t* font_face, cairo_user_data_key_t* key ) ; + +FUNCTION: cairo_status_t +cairo_font_face_set_user_data ( cairo_font_face_t* font_face, cairo_user_data_key_t* key, void* user_data, cairo_destroy_func_t destroy ) ; + +! Portable interface to general font features. + +FUNCTION: cairo_scaled_font_t* +cairo_scaled_font_create ( cairo_font_face_t* font_face, cairo_matrix_t* font_matrix, cairo_matrix_t* ctm, cairo_font_options_t* options ) ; + +FUNCTION: cairo_scaled_font_t* +cairo_scaled_font_reference ( cairo_scaled_font_t* scaled_font ) ; + +FUNCTION: void +cairo_scaled_font_destroy ( cairo_scaled_font_t* scaled_font ) ; + +FUNCTION: uint +cairo_scaled_font_get_reference_count ( cairo_scaled_font_t* scaled_font ) ; + +FUNCTION: cairo_status_t +cairo_scaled_font_status ( cairo_scaled_font_t* scaled_font ) ; + +FUNCTION: cairo_font_type_t +cairo_scaled_font_get_type ( cairo_scaled_font_t* scaled_font ) ; + +FUNCTION: void* +cairo_scaled_font_get_user_data ( cairo_scaled_font_t* scaled_font, cairo_user_data_key_t* key ) ; + +FUNCTION: cairo_status_t +cairo_scaled_font_set_user_data ( cairo_scaled_font_t* scaled_font, cairo_user_data_key_t* key, void* user_data, cairo_destroy_func_t destroy ) ; + +FUNCTION: void +cairo_scaled_font_extents ( cairo_scaled_font_t* scaled_font, cairo_font_extents_t* extents ) ; + +FUNCTION: void +cairo_scaled_font_text_extents ( cairo_scaled_font_t* scaled_font, char* utf8, cairo_text_extents_t* extents ) ; + +FUNCTION: void +cairo_scaled_font_glyph_extents ( cairo_scaled_font_t* scaled_font, cairo_glyph_t* glyphs, int num_glyphs, cairo_text_extents_t* extents ) ; + +FUNCTION: cairo_font_face_t* +cairo_scaled_font_get_font_face ( cairo_scaled_font_t* scaled_font ) ; + +FUNCTION: void +cairo_scaled_font_get_font_matrix ( cairo_scaled_font_t* scaled_font, cairo_matrix_t* font_matrix ) ; + +FUNCTION: void +cairo_scaled_font_get_ctm ( cairo_scaled_font_t* scaled_font, cairo_matrix_t* ctm ) ; + +FUNCTION: void +cairo_scaled_font_get_font_options ( cairo_scaled_font_t* scaled_font, cairo_font_options_t* options ) ; + +! Query functions + +FUNCTION: cairo_operator_t +cairo_get_operator ( cairo_t* cr ) ; + +FUNCTION: cairo_pattern_t* +cairo_get_source ( cairo_t* cr ) ; + +FUNCTION: double +cairo_get_tolerance ( cairo_t* cr ) ; + +FUNCTION: cairo_antialias_t +cairo_get_antialias ( cairo_t* cr ) ; + +FUNCTION: cairo_bool_t +cairo_has_current_point ( cairo_t* cr ) ; + +FUNCTION: void +cairo_get_current_point ( cairo_t* cr, double* x, double* y ) ; + +FUNCTION: cairo_fill_rule_t +cairo_get_fill_rule ( cairo_t* cr ) ; + +FUNCTION: double +cairo_get_line_width ( cairo_t* cr ) ; + +FUNCTION: cairo_line_cap_t +cairo_get_line_cap ( cairo_t* cr ) ; + +FUNCTION: cairo_line_join_t +cairo_get_line_join ( cairo_t* cr ) ; + +FUNCTION: double +cairo_get_miter_limit ( cairo_t* cr ) ; + +FUNCTION: int +cairo_get_dash_count ( cairo_t* cr ) ; + +FUNCTION: void +cairo_get_dash ( cairo_t* cr, double* dashes, double* offset ) ; + +FUNCTION: void +cairo_get_matrix ( cairo_t* cr, cairo_matrix_t* matrix ) ; + +FUNCTION: cairo_surface_t* +cairo_get_target ( cairo_t* cr ) ; + +FUNCTION: cairo_surface_t* +cairo_get_group_target ( cairo_t* cr ) ; + +TYPEDEF: int cairo_path_data_type_t +C-ENUM: + CAIRO_PATH_MOVE_TO + CAIRO_PATH_LINE_TO + CAIRO_PATH_CURVE_TO + CAIRO_PATH_CLOSE_PATH ; + +! NEED TO DO UNION HERE +C-STRUCT: cairo_path_data_t-point + { "double" "x" } + { "double" "y" } ; + +C-STRUCT: cairo_path_data_t-header + { "cairo_path_data_type_t" "type" } + { "int" "length" } ; + +C-UNION: cairo_path_data_t "cairo_path_data_t-point" "cairo_path_data_t-header" ; + +C-STRUCT: cairo_path_t + { "cairo_status_t" "status" } + { "cairo_path_data_t*" "data" } + { "int" "num_data" } ; + +FUNCTION: cairo_path_t* +cairo_copy_path ( cairo_t* cr ) ; + +FUNCTION: cairo_path_t* +cairo_copy_path_flat ( cairo_t* cr ) ; + +FUNCTION: void +cairo_append_path ( cairo_t* cr, cairo_path_t* path ) ; + +FUNCTION: void +cairo_path_destroy ( cairo_path_t* path ) ; + +! Error status queries + +FUNCTION: cairo_status_t +cairo_status ( cairo_t* cr ) ; + +FUNCTION: char* +cairo_status_to_string ( cairo_status_t status ) ; + +! Surface manipulation + +FUNCTION: cairo_surface_t* +cairo_surface_create_similar ( cairo_surface_t* other, cairo_content_t content, int width, int height ) ; + +FUNCTION: cairo_surface_t* +cairo_surface_reference ( cairo_surface_t* surface ) ; + +FUNCTION: void +cairo_surface_finish ( cairo_surface_t* surface ) ; + +FUNCTION: void +cairo_surface_destroy ( cairo_surface_t* surface ) ; + +FUNCTION: uint +cairo_surface_get_reference_count ( cairo_surface_t* surface ) ; + +FUNCTION: cairo_status_t +cairo_surface_status ( cairo_surface_t* surface ) ; + +TYPEDEF: int cairo_surface_type_t +C-ENUM: + CAIRO_SURFACE_TYPE_IMAGE + CAIRO_SURFACE_TYPE_PDF + CAIRO_SURFACE_TYPE_PS + CAIRO_SURFACE_TYPE_XLIB + CAIRO_SURFACE_TYPE_XCB + CAIRO_SURFACE_TYPE_GLITZ + CAIRO_SURFACE_TYPE_QUARTZ + CAIRO_SURFACE_TYPE_WIN32 + CAIRO_SURFACE_TYPE_BEOS + CAIRO_SURFACE_TYPE_DIRECTFB + CAIRO_SURFACE_TYPE_SVG + CAIRO_SURFACE_TYPE_OS2 + CAIRO_SURFACE_TYPE_WIN32_PRINTING + CAIRO_SURFACE_TYPE_QUARTZ_IMAGE ; + +FUNCTION: cairo_surface_type_t +cairo_surface_get_type ( cairo_surface_t* surface ) ; + +FUNCTION: cairo_content_t +cairo_surface_get_content ( cairo_surface_t* surface ) ; + +FUNCTION: cairo_status_t +cairo_surface_write_to_png ( cairo_surface_t* surface, char* filename ) ; + +FUNCTION: cairo_status_t +cairo_surface_write_to_png_stream ( cairo_surface_t* surface, cairo_write_func_t write_func, void* closure ) ; + +FUNCTION: void* +cairo_surface_get_user_data ( cairo_surface_t* surface, cairo_user_data_key_t* key ) ; + +FUNCTION: cairo_status_t +cairo_surface_set_user_data ( cairo_surface_t* surface, cairo_user_data_key_t* key, void* user_data, cairo_destroy_func_t destroy ) ; + +FUNCTION: void +cairo_surface_get_font_options ( cairo_surface_t* surface, cairo_font_options_t* options ) ; + +FUNCTION: void +cairo_surface_flush ( cairo_surface_t* surface ) ; + +FUNCTION: void +cairo_surface_mark_dirty ( cairo_surface_t* surface ) ; + +FUNCTION: void +cairo_surface_mark_dirty_rectangle ( cairo_surface_t* surface, int x, int y, int width, int height ) ; + +FUNCTION: void +cairo_surface_set_device_offset ( cairo_surface_t* surface, double x_offset, double y_offset ) ; + +FUNCTION: void +cairo_surface_get_device_offset ( cairo_surface_t* surface, double* x_offset, double* y_offset ) ; + +FUNCTION: void +cairo_surface_set_fallback_resolution ( cairo_surface_t* surface, double x_pixels_per_inch, double y_pixels_per_inch ) ; + +FUNCTION: void +cairo_surface_copy_page ( cairo_surface_t* surface ) ; + +FUNCTION: void +cairo_surface_show_page ( cairo_surface_t* surface ) ; + +! Image-surface functions + +TYPEDEF: int cairo_format_t +C-ENUM: + CAIRO_FORMAT_ARGB32 + CAIRO_FORMAT_RGB24 + CAIRO_FORMAT_A8 + CAIRO_FORMAT_A1 + CAIRO_FORMAT_RGB16_565 ; + +FUNCTION: cairo_surface_t* +cairo_image_surface_create ( cairo_format_t format, int width, int height ) ; + +FUNCTION: int +cairo_format_stride_for_width ( cairo_format_t format, int width ) ; + +FUNCTION: cairo_surface_t* +cairo_image_surface_create_for_data ( uchar* data, cairo_format_t format, int width, int height, int stride ) ; + +FUNCTION: uchar* +cairo_image_surface_get_data ( cairo_surface_t* surface ) ; + +FUNCTION: cairo_format_t +cairo_image_surface_get_format ( cairo_surface_t* surface ) ; + +FUNCTION: int +cairo_image_surface_get_width ( cairo_surface_t* surface ) ; + +FUNCTION: int +cairo_image_surface_get_height ( cairo_surface_t* surface ) ; + +FUNCTION: int +cairo_image_surface_get_stride ( cairo_surface_t* surface ) ; + +FUNCTION: cairo_surface_t* +cairo_image_surface_create_from_png ( char* filename ) ; + +FUNCTION: cairo_surface_t* +cairo_image_surface_create_from_png_stream ( cairo_read_func_t read_func, void* closure ) ; + +! Pattern creation functions + +FUNCTION: cairo_pattern_t* +cairo_pattern_create_rgb ( double red, double green, double blue ) ; + +FUNCTION: cairo_pattern_t* +cairo_pattern_create_rgba ( double red, double green, double blue, double alpha ) ; + +FUNCTION: cairo_pattern_t* +cairo_pattern_create_for_surface ( cairo_surface_t* surface ) ; + +FUNCTION: cairo_pattern_t* +cairo_pattern_create_linear ( double x0, double y0, double x1, double y1 ) ; + +FUNCTION: cairo_pattern_t* +cairo_pattern_create_radial ( double cx0, double cy0, double radius0, double cx1, double cy1, double radius1 ) ; + +FUNCTION: cairo_pattern_t* +cairo_pattern_reference ( cairo_pattern_t* pattern ) ; + +FUNCTION: void +cairo_pattern_destroy ( cairo_pattern_t* pattern ) ; + +FUNCTION: uint +cairo_pattern_get_reference_count ( cairo_pattern_t* pattern ) ; + +FUNCTION: cairo_status_t +cairo_pattern_status ( cairo_pattern_t* pattern ) ; + +FUNCTION: void* +cairo_pattern_get_user_data ( cairo_pattern_t* pattern, cairo_user_data_key_t* key ) ; + +FUNCTION: cairo_status_t +cairo_pattern_set_user_data ( cairo_pattern_t* pattern, cairo_user_data_key_t* key, void* user_data, cairo_destroy_func_t destroy ) ; + +TYPEDEF: int cairo_pattern_type_t +C-ENUM: + CAIRO_PATTERN_TYPE_SOLID + CAIRO_PATTERN_TYPE_SURFACE + CAIRO_PATTERN_TYPE_LINEAR + CAIRO_PATTERN_TYPE_RADIA ; + +FUNCTION: cairo_pattern_type_t +cairo_pattern_get_type ( cairo_pattern_t* pattern ) ; + +FUNCTION: void +cairo_pattern_add_color_stop_rgb ( cairo_pattern_t* pattern, double offset, double red, double green, double blue ) ; + +FUNCTION: void +cairo_pattern_add_color_stop_rgba ( cairo_pattern_t* pattern, double offset, double red, double green, double blue, double alpha ) ; + +FUNCTION: void +cairo_pattern_set_matrix ( cairo_pattern_t* pattern, cairo_matrix_t* matrix ) ; + +FUNCTION: void +cairo_pattern_get_matrix ( cairo_pattern_t* pattern, cairo_matrix_t* matrix ) ; + +TYPEDEF: int cairo_extend_t +C-ENUM: + CAIRO_EXTEND_NONE + CAIRO_EXTEND_REPEAT + CAIRO_EXTEND_REFLECT + CAIRO_EXTEND_PAD ; + +FUNCTION: void +cairo_pattern_set_extend ( cairo_pattern_t* pattern, cairo_extend_t extend ) ; + +FUNCTION: cairo_extend_t +cairo_pattern_get_extend ( cairo_pattern_t* pattern ) ; + +TYPEDEF: int cairo_filter_t +C-ENUM: + CAIRO_FILTER_FAST + CAIRO_FILTER_GOOD + CAIRO_FILTER_BEST + CAIRO_FILTER_NEAREST + CAIRO_FILTER_BILINEAR + CAIRO_FILTER_GAUSSIAN ; + +FUNCTION: void +cairo_pattern_set_filter ( cairo_pattern_t* pattern, cairo_filter_t filter ) ; + +FUNCTION: cairo_filter_t +cairo_pattern_get_filter ( cairo_pattern_t* pattern ) ; + +FUNCTION: cairo_status_t +cairo_pattern_get_rgba ( cairo_pattern_t* pattern, double* red, double* green, double* blue, double* alpha ) ; + +FUNCTION: cairo_status_t +cairo_pattern_get_surface ( cairo_pattern_t* pattern, cairo_surface_t* *surface ) ; + +FUNCTION: cairo_status_t +cairo_pattern_get_color_stop_rgba ( cairo_pattern_t* pattern, int index, double* offset, double* red, double* green, double* blue, double* alpha ) ; + +FUNCTION: cairo_status_t +cairo_pattern_get_color_stop_count ( cairo_pattern_t* pattern, int* count ) ; + +FUNCTION: cairo_status_t +cairo_pattern_get_linear_points ( cairo_pattern_t* pattern, double* x0, double* y0, double* x1, double* y1 ) ; + +FUNCTION: cairo_status_t +cairo_pattern_get_radial_circles ( cairo_pattern_t* pattern, double* x0, double* y0, double* r0, double* x1, double* y1, double* r1 ) ; + +! Matrix functions + +FUNCTION: void +cairo_matrix_init ( cairo_matrix_t* matrix, double xx, double yx, double xy, double yy, double x0, double y0 ) ; + +FUNCTION: void +cairo_matrix_init_identity ( cairo_matrix_t* matrix ) ; + +FUNCTION: void +cairo_matrix_init_translate ( cairo_matrix_t* matrix, double tx, double ty ) ; + +FUNCTION: void +cairo_matrix_init_scale ( cairo_matrix_t* matrix, double sx, double sy ) ; + +FUNCTION: void +cairo_matrix_init_rotate ( cairo_matrix_t* matrix, double radians ) ; + +FUNCTION: void +cairo_matrix_translate ( cairo_matrix_t* matrix, double tx, double ty ) ; + +FUNCTION: void +cairo_matrix_scale ( cairo_matrix_t* matrix, double sx, double sy ) ; + +FUNCTION: void +cairo_matrix_rotate ( cairo_matrix_t* matrix, double radians ) ; + +FUNCTION: cairo_status_t +cairo_matrix_invert ( cairo_matrix_t* matrix ) ; + +FUNCTION: void +cairo_matrix_multiply ( cairo_matrix_t* result, cairo_matrix_t* a, cairo_matrix_t* b ) ; + +FUNCTION: void +cairo_matrix_transform_distance ( cairo_matrix_t* matrix, double* dx, double* dy ) ; + +FUNCTION: void +cairo_matrix_transform_point ( cairo_matrix_t* matrix, double* x, double* y ) ; + +! Functions to be used while debugging (not intended for use in production code) +FUNCTION: void +cairo_debug_reset_static_data ( ) ; diff --git a/basis/cairo/gadgets/gadgets.factor b/basis/cairo/gadgets/gadgets.factor new file mode 100644 index 0000000000..131f7425c9 --- /dev/null +++ b/basis/cairo/gadgets/gadgets.factor @@ -0,0 +1,34 @@ +! Copyright (C) 2008 Matthew Willis. +! See http://factorcode.org/license.txt for BSD license. +USING: sequences math kernel byte-arrays cairo.ffi cairo +io.backend ui.gadgets accessors opengl.gl arrays fry +classes ui.render namespaces ; + +IN: cairo.gadgets + +: width>stride ( width -- stride ) 4 * ; + +GENERIC: render-cairo* ( gadget -- ) + +: render-cairo ( gadget -- byte-array ) + dup dim>> first2 over width>stride + [ * nip dup CAIRO_FORMAT_ARGB32 ] + [ cairo_image_surface_create_for_data ] 3bi + rot '[ _ render-cairo* ] with-cairo-from-surface ; inline + +TUPLE: cairo-gadget < gadget ; + +: ( dim -- gadget ) + cairo-gadget new-gadget + swap >>dim ; + +M: cairo-gadget draw-gadget* + [ dim>> ] [ render-cairo ] bi + origin get first2 glRasterPos2i + 1.0 -1.0 glPixelZoom + [ first2 GL_BGRA GL_UNSIGNED_BYTE ] dip + glDrawPixels ; + +: copy-surface ( surface -- ) + cr swap 0 0 cairo_set_source_surface + cr cairo_paint ; diff --git a/basis/cairo/summary.txt b/basis/cairo/summary.txt new file mode 100644 index 0000000000..f6cb370ff6 --- /dev/null +++ b/basis/cairo/summary.txt @@ -0,0 +1 @@ +Cairo graphics library binding diff --git a/basis/cairo/tags.txt b/basis/cairo/tags.txt new file mode 100644 index 0000000000..bb863cf9a0 --- /dev/null +++ b/basis/cairo/tags.txt @@ -0,0 +1 @@ +bindings diff --git a/basis/checksums/common/common.factor b/basis/checksums/common/common.factor index 7d5f34777d..0ae4328446 100644 --- a/basis/checksums/common/common.factor +++ b/basis/checksums/common/common.factor @@ -1,21 +1,20 @@ ! Copyright (C) 2006, 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. USING: kernel math math.bitwise strings io.binary namespaces -make grouping ; +make grouping byte-arrays ; IN: checksums.common SYMBOL: bytes-read -: calculate-pad-length ( length -- pad-length ) - dup 56 < 55 119 ? swap - ; +: calculate-pad-length ( length -- length' ) + [ 56 < 55 119 ? ] keep - ; : pad-last-block ( str big-endian? length -- str ) [ - rot % - HEX: 80 , - dup HEX: 3f bitand calculate-pad-length 0 % - 3 shift 8 rot [ >be ] [ >le ] if % - ] "" make 64 group ; + [ % ] 2dip HEX: 80 , + [ HEX: 3f bitand calculate-pad-length % ] + [ 3 shift 8 rot [ >be ] [ >le ] if % ] bi + ] B{ } make 64 group ; : update-old-new ( old new -- ) [ [ get ] bi@ w+ dup ] 2keep [ set ] bi@ ; inline diff --git a/basis/checksums/md5/md5.factor b/basis/checksums/md5/md5.factor index d919b0e313..7931828217 100644 --- a/basis/checksums/md5/md5.factor +++ b/basis/checksums/md5/md5.factor @@ -3,7 +3,7 @@ USING: kernel io io.binary io.files io.streams.byte-array math math.functions math.parser namespaces splitting grouping strings sequences byte-arrays locals sequences.private -io.encodings.binary symbols math.bitwise checksums +io.encodings.binary math.bitwise checksums checksums.common checksums.stream ; IN: checksums.md5 diff --git a/basis/checksums/sha1/sha1.factor b/basis/checksums/sha1/sha1.factor index 6cdc9270aa..ede8a8f653 100644 --- a/basis/checksums/sha1/sha1.factor +++ b/basis/checksums/sha1/sha1.factor @@ -3,7 +3,7 @@ USING: arrays combinators kernel io io.encodings.binary io.files io.streams.byte-array math.vectors strings sequences namespaces make math parser sequences assocs grouping vectors io.binary -hashtables symbols math.bitwise checksums checksums.common +hashtables math.bitwise checksums checksums.common checksums.stream ; IN: checksums.sha1 diff --git a/basis/checksums/sha2/sha2.factor b/basis/checksums/sha2/sha2.factor index beb657bd3e..898a695b34 100644 --- a/basis/checksums/sha2/sha2.factor +++ b/basis/checksums/sha2/sha2.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. USING: kernel splitting grouping math sequences namespaces make -io.binary symbols math.bitwise checksums checksums.common +io.binary math.bitwise checksums checksums.common sbufs strings ; IN: checksums.sha2 diff --git a/basis/compiler/cfg/builder/builder-tests.factor b/basis/compiler/cfg/builder/builder-tests.factor index c3cce1425e..0b303a8a43 100644 --- a/basis/compiler/cfg/builder/builder-tests.factor +++ b/basis/compiler/cfg/builder/builder-tests.factor @@ -14,7 +14,7 @@ kernel.private math ; [ ] [ dup ] [ swap ] - [ >r r> ] + [ [ ] dip ] [ fixnum+ ] [ fixnum+fast ] [ 3 fixnum+fast ] diff --git a/basis/compiler/cfg/intrinsics/intrinsics.factor b/basis/compiler/cfg/intrinsics/intrinsics.factor index 5f75330865..3d0a7bec9c 100644 --- a/basis/compiler/cfg/intrinsics/intrinsics.factor +++ b/basis/compiler/cfg/intrinsics/intrinsics.factor @@ -1,7 +1,6 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: qualified words sequences kernel combinators -cpu.architecture +USING: words sequences kernel combinators cpu.architecture compiler.cfg.hats compiler.cfg.instructions compiler.cfg.intrinsics.alien diff --git a/basis/compiler/cfg/linear-scan/linear-scan-tests.factor b/basis/compiler/cfg/linear-scan/linear-scan-tests.factor index 948302c74b..7420b4fd17 100644 --- a/basis/compiler/cfg/linear-scan/linear-scan-tests.factor +++ b/basis/compiler/cfg/linear-scan/linear-scan-tests.factor @@ -249,7 +249,7 @@ SYMBOL: max-uses ] with-scope ; : random-test ( num-intervals max-uses max-registers max-insns -- ) - over >r random-live-intervals r> int-regs associate check-linear-scan ; + over [ random-live-intervals ] dip int-regs associate check-linear-scan ; [ ] [ 30 2 1 60 random-test ] unit-test [ ] [ 60 2 2 60 random-test ] unit-test diff --git a/basis/compiler/tests/codegen.factor b/basis/compiler/tests/codegen.factor index e743c8484b..3d17009e31 100644 --- a/basis/compiler/tests/codegen.factor +++ b/basis/compiler/tests/codegen.factor @@ -75,7 +75,7 @@ unit-test -12 -13 [ [ 0 swap fixnum-fast ] bi@ ] compile-call ] unit-test -[ -1 2 ] [ 1 2 [ >r 0 swap fixnum- r> ] compile-call ] unit-test +[ -1 2 ] [ 1 2 [ [ 0 swap fixnum- ] dip ] compile-call ] unit-test [ 12 13 ] [ -12 -13 [ [ 0 swap fixnum- ] bi@ ] compile-call @@ -88,13 +88,13 @@ unit-test ! Test slow shuffles [ 3 1 2 3 4 5 6 7 8 9 ] [ 1 2 3 4 5 6 7 8 9 - [ >r >r >r >r >r >r >r >r >r 3 r> r> r> r> r> r> r> r> r> ] + [ [ [ [ [ [ [ [ [ [ 3 ] dip ] dip ] dip ] dip ] dip ] dip ] dip ] dip ] dip ] compile-call ] unit-test [ 2 2 2 2 2 2 2 2 2 2 1 ] [ 1 2 - [ swap >r dup dup dup dup dup dup dup dup dup r> ] compile-call + [ swap [ dup dup dup dup dup dup dup dup dup ] dip ] compile-call ] unit-test [ ] [ [ 9 [ ] times ] compile-call ] unit-test @@ -110,7 +110,7 @@ unit-test float+ swap { [ "hey" ] [ "bye" ] } dispatch ; : try-breaking-dispatch-2 ( -- ? ) - 1 1.0 2.5 try-breaking-dispatch "bye" = >r 3.5 = r> and ; + 1 1.0 2.5 try-breaking-dispatch "bye" = [ 3.5 = ] dip and ; [ t ] [ 10000000 [ drop try-breaking-dispatch-2 ] all? @@ -131,10 +131,10 @@ unit-test 2dup 1 slot eq? [ 2drop ] [ 2dup array-nth tombstone? [ [ - [ array-nth ] 2keep >r 1 fixnum+fast r> array-nth + [ array-nth ] 2keep [ 1 fixnum+fast ] dip array-nth pick 2dup hellish-bug-1 3drop ] 2keep - ] unless >r 2 fixnum+fast r> hellish-bug-2 + ] unless [ 2 fixnum+fast ] dip hellish-bug-2 ] if ; inline recursive : hellish-bug-3 ( hash array -- ) @@ -159,9 +159,9 @@ TUPLE: my-tuple ; [ 5 ] [ "hi" foox ] unit-test ! Making sure we don't needlessly unbox/rebox -[ t 3.0 ] [ 1.0 dup [ dup 2.0 float+ >r eq? r> ] compile-call ] unit-test +[ t 3.0 ] [ 1.0 dup [ dup 2.0 float+ [ eq? ] dip ] compile-call ] unit-test -[ t 3.0 ] [ 1.0 dup [ dup 2.0 float+ ] compile-call >r eq? r> ] unit-test +[ t 3.0 ] [ 1.0 dup [ dup 2.0 float+ ] compile-call [ eq? ] dip ] unit-test [ t ] [ 1.0 dup [ [ 2.0 float+ ] keep ] compile-call nip eq? ] unit-test @@ -188,7 +188,7 @@ TUPLE: my-tuple ; [ 2 1 ] [ 2 1 - [ 2dup fixnum< [ >r die r> ] when ] compile-call + [ 2dup fixnum< [ [ die ] dip ] when ] compile-call ] unit-test ! Regression diff --git a/basis/compiler/tests/curry.factor b/basis/compiler/tests/curry.factor index ecc2d87b73..1857baf503 100644 --- a/basis/compiler/tests/curry.factor +++ b/basis/compiler/tests/curry.factor @@ -8,7 +8,7 @@ IN: compiler.tests [ 3 ] [ 5 [ 2 [ - ] 2curry call ] compile-call ] unit-test [ 3 ] [ 5 2 [ [ - ] 2curry call ] compile-call ] unit-test [ 3 ] [ 5 2 [ [ - ] 2curry 9 swap call /i ] compile-call ] unit-test -[ 3 ] [ 5 2 [ [ - ] 2curry >r 9 r> call /i ] compile-call ] unit-test +[ 3 ] [ 5 2 [ [ - ] 2curry [ 9 ] dip call /i ] compile-call ] unit-test [ -10 -20 ] [ 10 20 -1 [ [ * ] curry bi@ ] compile-call ] unit-test @@ -21,14 +21,14 @@ IN: compiler.tests [ [ 6 2 + ] ] [ 2 5 - [ >r [ + ] curry r> 0 < [ -2 ] [ 6 ] if swap curry ] + [ [ [ + ] curry ] dip 0 < [ -2 ] [ 6 ] if swap curry ] compile-call >quotation ] unit-test [ 8 ] [ 2 5 - [ >r [ + ] curry r> 0 < [ -2 ] [ 6 ] if swap curry call ] + [ [ [ + ] curry ] dip 0 < [ -2 ] [ 6 ] if swap curry call ] compile-call ] unit-test diff --git a/basis/compiler/tests/optimizer.factor b/basis/compiler/tests/optimizer.factor index fa6a3c7b21..bb1cb2eab5 100644 --- a/basis/compiler/tests/optimizer.factor +++ b/basis/compiler/tests/optimizer.factor @@ -248,12 +248,12 @@ USE: binary-search.private : lift-loop-tail-test-1 ( a quot -- ) over even? [ - [ >r 3 - r> call ] keep lift-loop-tail-test-1 + [ [ 3 - ] dip call ] keep lift-loop-tail-test-1 ] [ over 0 < [ 2drop ] [ - [ >r 2 - r> call ] keep lift-loop-tail-test-1 + [ [ 2 - ] dip call ] keep lift-loop-tail-test-1 ] if ] if ; inline @@ -290,7 +290,7 @@ HINTS: recursive-inline-hang-3 array ; ! Wow : counter-example ( a b c d -- a' b' c' d' ) - dup 0 > [ 1 - >r rot 2 * r> counter-example ] when ; inline + dup 0 > [ 1 - [ rot 2 * ] dip counter-example ] when ; inline : counter-example' ( -- a' b' c' d' ) 1 2 3.0 3 counter-example ; @@ -330,7 +330,7 @@ PREDICATE: list < improper-list [ 0 5 ] [ 0 interval-inference-bug ] unit-test : aggressive-flush-regression ( a -- b ) - f over >r drop r> 1 + ; + f over [ drop ] dip 1 + ; [ 1.0 aggressive-flush-regression drop ] must-fail diff --git a/basis/compiler/tree/dead-code/dead-code-tests.factor b/basis/compiler/tree/dead-code/dead-code-tests.factor index b64e30d8f9..7c28866e94 100644 --- a/basis/compiler/tree/dead-code/dead-code-tests.factor +++ b/basis/compiler/tree/dead-code/dead-code-tests.factor @@ -79,7 +79,7 @@ IN: compiler.tree.dead-code.tests [ [ read drop 1 2 ] ] [ [ read [ 1 2 ] dip drop ] optimize-quot ] unit-test -[ [ over >r + r> ] ] [ [ [ + ] [ drop ] 2bi ] optimize-quot ] unit-test +[ [ over >R + R> ] ] [ [ [ + ] [ drop ] 2bi ] optimize-quot ] unit-test [ [ [ ] [ ] if ] ] [ [ [ 1 ] [ 2 ] if drop ] optimize-quot ] unit-test diff --git a/basis/compiler/tree/debugger/debugger.factor b/basis/compiler/tree/debugger/debugger.factor index e75e7f6046..9f2cc0536e 100644 --- a/basis/compiler/tree/debugger/debugger.factor +++ b/basis/compiler/tree/debugger/debugger.factor @@ -4,7 +4,7 @@ USING: kernel assocs match fry accessors namespaces make effects sequences sequences.private quotations generic macros arrays prettyprint prettyprint.backend prettyprint.custom prettyprint.sections math words combinators -combinators.short-circuit io sorting hints qualified +combinators.short-circuit io sorting hints compiler.tree compiler.tree.recursive compiler.tree.normalization @@ -80,10 +80,12 @@ M: shuffle-node pprint* effect>> effect>string text ; [ out-d>> length 1 = ] } 1&& ; +SYMBOLS: >R R> ; + M: #shuffle node>quot { - { [ dup #>r? ] [ drop \ >r , ] } - { [ dup #r>? ] [ drop \ r> , ] } + { [ dup #>r? ] [ drop \ >R , ] } + { [ dup #r>? ] [ drop \ R> , ] } { [ dup [ in-r>> empty? ] [ out-r>> empty? ] bi and ] [ diff --git a/basis/compiler/tree/modular-arithmetic/modular-arithmetic-tests.factor b/basis/compiler/tree/modular-arithmetic/modular-arithmetic-tests.factor index b535dfe39c..5d6a9cdea1 100644 --- a/basis/compiler/tree/modular-arithmetic/modular-arithmetic-tests.factor +++ b/basis/compiler/tree/modular-arithmetic/modular-arithmetic-tests.factor @@ -8,13 +8,13 @@ compiler.tree.debugger ; : test-modular-arithmetic ( quot -- quot' ) build-tree optimize-tree nodes>quot ; -[ [ >r >fixnum r> >fixnum fixnum+fast ] ] +[ [ >R >fixnum R> >fixnum fixnum+fast ] ] [ [ { integer integer } declare + >fixnum ] test-modular-arithmetic ] unit-test [ [ +-integer-integer dup >fixnum ] ] [ [ { integer integer } declare + dup >fixnum ] test-modular-arithmetic ] unit-test -[ [ >r >fixnum r> >fixnum fixnum+fast 4 fixnum*fast ] ] +[ [ >R >fixnum R> >fixnum fixnum+fast 4 fixnum*fast ] ] [ [ { integer integer } declare + 4 * >fixnum ] test-modular-arithmetic ] unit-test TUPLE: declared-fixnum { x fixnum } ; diff --git a/basis/compiler/tree/propagation/known-words/known-words.factor b/basis/compiler/tree/propagation/known-words/known-words.factor index 4d8d935477..d5aa5318a4 100644 --- a/basis/compiler/tree/propagation/known-words/known-words.factor +++ b/basis/compiler/tree/propagation/known-words/known-words.factor @@ -6,7 +6,7 @@ math.parser math.order layouts words sequences sequences.private arrays assocs classes classes.algebra combinators generic.math splitting fry locals classes.tuple alien.accessors classes.tuple.private slots.private definitions strings.private -vectors hashtables +vectors hashtables generic stack-checker.state compiler.tree.comparisons compiler.tree.propagation.info @@ -337,3 +337,12 @@ generic-comparison-ops [ bi ] [ 2drop object-info ] if ] "outputs" set-word-prop + +\ equal? [ + ! If first input has a known type and second input is an + ! object, we convert this to [ swap equal? ]. + in-d>> first2 value-info class>> object class= [ + value-info class>> \ equal? specific-method + [ swap equal? ] f ? + ] [ drop f ] if +] "custom-inlining" set-word-prop diff --git a/basis/compiler/tree/propagation/propagation-tests.factor b/basis/compiler/tree/propagation/propagation-tests.factor index d95245fe83..b9a88de34a 100644 --- a/basis/compiler/tree/propagation/propagation-tests.factor +++ b/basis/compiler/tree/propagation/propagation-tests.factor @@ -18,7 +18,7 @@ IN: compiler.tree.propagation.tests [ V{ fixnum } ] [ [ 1 ] final-classes ] unit-test -[ V{ fixnum } ] [ [ 1 >r r> ] final-classes ] unit-test +[ V{ fixnum } ] [ [ 1 [ ] dip ] final-classes ] unit-test [ V{ fixnum object } ] [ [ 1 swap ] final-classes ] unit-test @@ -198,7 +198,7 @@ IN: compiler.tree.propagation.tests [ { fixnum byte-array } declare [ nth-unsafe ] 2keep [ nth-unsafe ] 2keep nth-unsafe - >r >r 298 * r> 100 * - r> 208 * - 128 + -8 shift + [ [ 298 * ] dip 100 * - ] dip 208 * - 128 + -8 shift 255 min 0 max ] final-classes ] unit-test @@ -640,6 +640,10 @@ MIXIN: empty-mixin [ { fixnum } declare log2 0 >= ] final-classes ] unit-test +[ V{ POSTPONE: f } ] [ + [ { word object } declare equal? ] final-classes +] unit-test + ! [ V{ string } ] [ ! [ dup string? t xor [ "A" throw ] [ ] if ] final-classes ! ] unit-test diff --git a/basis/concurrency/distributed/distributed.factor b/basis/concurrency/distributed/distributed.factor index 99ad239011..ca1c5762f6 100644 --- a/basis/concurrency/distributed/distributed.factor +++ b/basis/concurrency/distributed/distributed.factor @@ -2,7 +2,7 @@ ! See http://factorcode.org/license.txt for BSD license. USING: serialize sequences concurrency.messaging threads io io.servers.connection io.encodings.binary -qualified arrays namespaces kernel accessors ; +arrays namespaces kernel accessors ; FROM: io.sockets => host-name with-client ; IN: concurrency.distributed diff --git a/basis/concurrency/messaging/messaging.factor b/basis/concurrency/messaging/messaging.factor index 7a00f62e9e..61a3c38991 100644 --- a/basis/concurrency/messaging/messaging.factor +++ b/basis/concurrency/messaging/messaging.factor @@ -20,13 +20,13 @@ M: thread send ( message thread -- ) my-mailbox mailbox-get ?linked ; : receive-timeout ( timeout -- message ) - my-mailbox swap mailbox-get-timeout ?linked ; + [ my-mailbox ] dip mailbox-get-timeout ?linked ; : receive-if ( pred -- message ) - my-mailbox swap mailbox-get? ?linked ; inline + [ my-mailbox ] dip mailbox-get? ?linked ; inline : receive-if-timeout ( timeout pred -- message ) - my-mailbox -rot mailbox-get-timeout? ?linked ; inline + [ my-mailbox ] 2dip mailbox-get-timeout? ?linked ; inline : rethrow-linked ( error process supervisor -- ) [ ] dip send ; diff --git a/basis/constants/constants.factor b/basis/constants/constants.factor deleted file mode 100644 index bd2b3f188f..0000000000 --- a/basis/constants/constants.factor +++ /dev/null @@ -1,8 +0,0 @@ -! Copyright (C) 2008 Slava Pestov. -! See http://factorcode.org/license.txt for BSD license. -USING: parser kernel words ; -IN: constants - -: CONSTANT: - CREATE scan-object [ ] curry (( -- value )) - define-inline ; parsing diff --git a/basis/cords/authors.txt b/basis/cords/authors.txt new file mode 100644 index 0000000000..1901f27a24 --- /dev/null +++ b/basis/cords/authors.txt @@ -0,0 +1 @@ +Slava Pestov diff --git a/basis/cords/cords-tests.factor b/basis/cords/cords-tests.factor new file mode 100644 index 0000000000..0058c8f07a --- /dev/null +++ b/basis/cords/cords-tests.factor @@ -0,0 +1,5 @@ +IN: cords.tests +USING: cords strings tools.test kernel sequences ; + +[ "hello world" ] [ "hello" " world" cord-append dup like ] unit-test +[ "hello world" ] [ { "he" "llo" " world" } cord-concat dup like ] unit-test diff --git a/basis/cords/cords.factor b/basis/cords/cords.factor new file mode 100644 index 0000000000..915744491f --- /dev/null +++ b/basis/cords/cords.factor @@ -0,0 +1,70 @@ +! Copyright (C) 2008 Slava Pestov. +! See http://factorcode.org/license.txt for BSD license. +USING: accessors assocs sequences sorting binary-search math +math.order arrays combinators kernel ; +IN: cords + +> length ] [ second>> length ] bi + ; + +M: simple-cord virtual-seq first>> ; + +M: simple-cord virtual@ + 2dup first>> length < + [ first>> ] [ [ first>> length - ] [ second>> ] bi ] if ; + +TUPLE: multi-cord count seqs ; + +M: multi-cord length count>> ; + +M: multi-cord virtual@ + dupd + seqs>> [ first <=> ] with search nip + [ first - ] [ second ] bi ; + +M: multi-cord virtual-seq + seqs>> [ f ] [ first second ] if-empty ; + +: ( seqs -- cord ) + dup length 2 = [ + first2 simple-cord boa + ] [ + [ 0 [ length + ] accumulate ] keep zip multi-cord boa + ] if ; + +PRIVATE> + +UNION: cord simple-cord multi-cord ; + +INSTANCE: cord virtual-sequence + +INSTANCE: multi-cord virtual-sequence + +: cord-append ( seq1 seq2 -- cord ) + { + { [ over empty? ] [ nip ] } + { [ dup empty? ] [ drop ] } + { [ 2dup [ cord? ] both? ] [ [ seqs>> values ] bi@ append ] } + { [ over cord? ] [ [ seqs>> values ] dip suffix ] } + { [ dup cord? ] [ seqs>> values swap prefix ] } + [ 2array ] + } cond ; + +: cord-concat ( seqs -- cord ) + { + { [ dup empty? ] [ drop f ] } + { [ dup length 1 = ] [ first ] } + [ + [ + { + { [ dup cord? ] [ seqs>> values ] } + { [ dup empty? ] [ drop { } ] } + [ 1array ] + } cond + ] map concat + ] + } cond ; diff --git a/basis/cords/summary.txt b/basis/cords/summary.txt new file mode 100644 index 0000000000..3c69862b71 --- /dev/null +++ b/basis/cords/summary.txt @@ -0,0 +1 @@ +Virtual sequence concatenation diff --git a/basis/cords/tags.txt b/basis/cords/tags.txt new file mode 100644 index 0000000000..42d711b32b --- /dev/null +++ b/basis/cords/tags.txt @@ -0,0 +1 @@ +collections diff --git a/basis/cpu/ppc/bootstrap.factor b/basis/cpu/ppc/bootstrap.factor index 445c7082bc..b27f3aee72 100644 --- a/basis/cpu/ppc/bootstrap.factor +++ b/basis/cpu/ppc/bootstrap.factor @@ -302,9 +302,7 @@ big-endian on 4 ds-reg 0 STW ] f f f \ -rot define-sub-primitive -[ jit->r ] f f f \ >r define-sub-primitive - -[ jit-r> ] f f f \ r> define-sub-primitive +[ jit->r ] f f f \ load-local define-sub-primitive ! Comparisons : jit-compare ( insn -- ) diff --git a/basis/cpu/x86/64/64.factor b/basis/cpu/x86/64/64.factor index 841a4e4c55..e46c8f6914 100644 --- a/basis/cpu/x86/64/64.factor +++ b/basis/cpu/x86/64/64.factor @@ -50,8 +50,8 @@ M: x86.64 %prologue ( n -- ) M: stack-params %load-param-reg drop - >r R11 swap param@ MOV - r> param@ R11 MOV ; + [ R11 swap param@ MOV ] dip + param@ R11 MOV ; M: stack-params %save-param-reg drop diff --git a/basis/cpu/x86/assembler/syntax/syntax.factor b/basis/cpu/x86/assembler/syntax/syntax.factor index 6ddec4af07..343850f9e6 100644 --- a/basis/cpu/x86/assembler/syntax/syntax.factor +++ b/basis/cpu/x86/assembler/syntax/syntax.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: kernel words sequences lexer parser fry ; +USING: kernel words words.symbol sequences lexer parser fry ; IN: cpu.x86.assembler.syntax : define-register ( name num size -- ) diff --git a/basis/cpu/x86/bootstrap.factor b/basis/cpu/x86/bootstrap.factor index 26488b8d95..5e3405e93a 100644 --- a/basis/cpu/x86/bootstrap.factor +++ b/basis/cpu/x86/bootstrap.factor @@ -319,9 +319,7 @@ big-endian off ds-reg [] temp1 MOV ] f f f \ -rot define-sub-primitive -[ jit->r ] f f f \ >r define-sub-primitive - -[ jit-r> ] f f f \ r> define-sub-primitive +[ jit->r ] f f f \ load-local define-sub-primitive ! Comparisons : jit-compare ( insn -- ) diff --git a/basis/db/db-docs.factor b/basis/db/db-docs.factor index 8173ff6a5b..ae7451cb48 100644 --- a/basis/db/db-docs.factor +++ b/basis/db/db-docs.factor @@ -1,20 +1,20 @@ ! Copyright (C) 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. USING: classes kernel help.markup help.syntax sequences -alien assocs strings math multiline quotations ; +alien assocs strings math multiline quotations db.private ; IN: db -HELP: db -{ $description "The " { $snippet "db" } " class is the superclass of all other database classes. It stores a " { $snippet "handle" } " to the database as well as insert, update, and delete queries." } ; +HELP: db-connection +{ $description "The " { $snippet "db-connection" } " class is the superclass of all other database classes. It stores a " { $snippet "handle" } " to the database as well as insert, update, and delete queries. Stores the current database object as a dynamic variable." } ; -HELP: new-db -{ $values { "class" class } { "obj" object } } +HELP: new-db-connection +{ $values { "class" class } { "obj" db-connection } } { $description "Creates a new database object from a given class with caches for prepared statements. Does not actually connect to the database until " { $link db-open } " or " { $link with-db } " is called." } { $notes "User-defined databases must call this constructor word instead of " { $link new } "." } ; HELP: db-open -{ $values { "db" db } { "db" db } } -{ $description "Opens a database using the configuration data stored in a " { $link db } " tuple. The database object now references a database handle that must be cleaned up. Therefore, it is better to use the " { $link with-db } " combinator than calling this word directly." } ; +{ $values { "db" "a database configuration object" } { "db-connection" db-connection } } +{ $description "Opens a database using the configuration data stored in a " { $snippet "database configuration object" } "tuple. The database object now references a database handle that must be cleaned up. Therefore, it is better to use the " { $link with-db } " combinator than calling this word directly." } ; HELP: db-close { $values { "handle" alien } } @@ -141,13 +141,13 @@ HELP: rollback-transaction HELP: sql-command { $values { "sql" string } } -{ $description "Executes a SQL string using the databse in the " { $link db } " symbol." } ; +{ $description "Executes a SQL string using the databse in the " { $link db-connection } " symbol." } ; HELP: sql-query { $values { "sql" string } { "rows" "an array of arrays of strings" } } -{ $description "Runs a SQL query of raw text in the database in the " { $link db } " symbol. Each row is returned as an array of strings; no type-conversions are done on the resulting data." } ; +{ $description "Runs a SQL query of raw text in the database in the " { $link db-connection } " symbol. Each row is returned as an array of strings; no type-conversions are done on the resulting data." } ; { sql-command sql-query } related-words @@ -167,8 +167,8 @@ HELP: sql-row-typed HELP: with-db { $values - { "db" db } { "quot" quotation } } -{ $description "Calls the quotation with a database bound to the " { $link db } " symbol. See " { $link "db-custom-database-combinators" } " for help setting up database access." } ; + { "db" "a database configuration object" } { "quot" quotation } } +{ $description "Calls the quotation with a database bound to the " { $link db-connection } " symbol. See " { $link "db-custom-database-combinators" } " for help setting up database access." } ; HELP: with-transaction { $values diff --git a/basis/db/db.factor b/basis/db/db.factor index b7bd8218a2..0b18044f2b 100644 --- a/basis/db/db.factor +++ b/basis/db/db.factor @@ -5,25 +5,29 @@ namespaces sequences classes.tuple words strings tools.walker accessors combinators fry ; IN: db -TUPLE: db +>insert-statements H{ } clone >>update-statements H{ } clone >>delete-statements ; inline -GENERIC: db-open ( db -- db ) -HOOK: db-close db ( handle -- ) +PRIVATE> + +GENERIC: db-open ( db -- db-connection ) +HOOK: db-close db-connection ( handle -- ) : dispose-statements ( assoc -- ) values dispose-each ; -M: db dispose ( db -- ) - dup db [ +M: db-connection dispose ( db-connection -- ) + dup db-connection [ [ dispose-statements H{ } clone ] change-insert-statements [ dispose-statements H{ } clone ] change-update-statements [ dispose-statements H{ } clone ] change-delete-statements @@ -63,8 +67,8 @@ TUPLE: prepared-statement < statement ; swap >>in-params swap >>sql ; -HOOK: db ( string in out -- statement ) -HOOK: db ( string in out -- statement ) +HOOK: db-connection ( string in out -- statement ) +HOOK: db-connection ( string in out -- statement ) GENERIC: prepare-statement ( statement -- ) GENERIC: bind-statement* ( statement -- ) GENERIC: low-level-bind ( statement -- ) @@ -107,8 +111,8 @@ M: object execute-statement* ( statement type -- ) accumulator [ query-each ] dip { } like ; inline : with-db ( db quot -- ) - [ db-open db ] dip - '[ db get [ drop @ ] with-disposal ] with-variable ; inline + [ db-open db-connection ] dip + '[ db-connection get [ drop @ ] with-disposal ] with-variable ; inline ! Words for working with raw SQL statements : default-query ( query -- result-set ) @@ -126,13 +130,13 @@ M: object execute-statement* ( statement type -- ) ! Transactions SYMBOL: in-transaction -HOOK: begin-transaction db ( -- ) -HOOK: commit-transaction db ( -- ) -HOOK: rollback-transaction db ( -- ) +HOOK: begin-transaction db-connection ( -- ) +HOOK: commit-transaction db-connection ( -- ) +HOOK: rollback-transaction db-connection ( -- ) -M: db begin-transaction ( -- ) "BEGIN" sql-command ; -M: db commit-transaction ( -- ) "COMMIT" sql-command ; -M: db rollback-transaction ( -- ) "ROLLBACK" sql-command ; +M: db-connection begin-transaction ( -- ) "BEGIN" sql-command ; +M: db-connection commit-transaction ( -- ) "COMMIT" sql-command ; +M: db-connection rollback-transaction ( -- ) "ROLLBACK" sql-command ; : in-transaction? ( -- ? ) in-transaction get ; diff --git a/basis/db/pools/pools.factor b/basis/db/pools/pools.factor index 8bc5e87f0e..55ff3a383b 100644 --- a/basis/db/pools/pools.factor +++ b/basis/db/pools/pools.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors kernel arrays namespaces sequences continuations -io.pools db fry ; +io.pools db fry db.private ; IN: db.pools TUPLE: db-pool < pool db ; @@ -17,4 +17,4 @@ M: db-pool make-connection ( pool -- ) db>> db-open ; : with-pooled-db ( pool quot -- ) - '[ db _ with-variable ] with-pooled-connection ; inline + '[ db-connection _ with-variable ] with-pooled-connection ; inline diff --git a/basis/db/postgresql/lib/lib.factor b/basis/db/postgresql/lib/lib.factor index 5149d14f3d..19cf5c5002 100644 --- a/basis/db/postgresql/lib/lib.factor +++ b/basis/db/postgresql/lib/lib.factor @@ -6,7 +6,7 @@ db.types tools.walker ascii splitting math.parser combinators libc shuffle calendar.format byte-arrays destructors prettyprint accessors strings serialize io.encodings.binary io.encodings.utf8 alien.strings io.streams.byte-array summary present urls -specialized-arrays.uint specialized-arrays.alien ; +specialized-arrays.uint specialized-arrays.alien db.private ; IN: db.postgresql.lib : postgresql-result-error-message ( res -- str/f ) @@ -24,7 +24,7 @@ IN: db.postgresql.lib "\n" split [ [ blank? ] trim ] map "\n" join ; : postgresql-error-message ( -- str ) - db get handle>> (postgresql-error-message) ; + db-connection get handle>> (postgresql-error-message) ; : postgresql-error ( res -- res ) dup [ postgresql-error-message throw ] unless ; @@ -44,7 +44,7 @@ M: postgresql-result-null summary ( obj -- str ) dup PQstatus zero? [ (postgresql-error-message) throw ] unless ; : do-postgresql-statement ( statement -- res ) - db get handle>> swap sql>> PQexec dup postgresql-result-ok? [ + db-connection get handle>> swap sql>> PQexec dup postgresql-result-ok? [ [ postgresql-result-error-message ] [ PQclear ] bi throw ] unless ; @@ -99,7 +99,7 @@ M: postgresql-result-null summary ( obj -- str ) : do-postgresql-bound-statement ( statement -- res ) [ - [ db get handle>> ] dip + [ db-connection get handle>> ] dip { [ sql>> ] [ bind-params>> length ] diff --git a/basis/db/postgresql/postgresql-tests.factor b/basis/db/postgresql/postgresql-tests.factor index bc5ec2f0c5..cf6dc903f1 100644 --- a/basis/db/postgresql/postgresql-tests.factor +++ b/basis/db/postgresql/postgresql-tests.factor @@ -1,5 +1,5 @@ USING: kernel db.postgresql alien continuations io classes -prettyprint sequences namespaces tools.test db +prettyprint sequences namespaces tools.test db db.private db.tuples db.types unicode.case accessors system ; IN: db.postgresql.tests @@ -92,7 +92,3 @@ os windows? cpu x86.64? and [ ] with-db ] unit-test ] unless - - -: with-dummy-db ( quot -- ) - [ T{ postgresql-db } db ] dip with-variable ; diff --git a/basis/db/postgresql/postgresql.factor b/basis/db/postgresql/postgresql.factor index 90a875b8ff..a094fbc542 100644 --- a/basis/db/postgresql/postgresql.factor +++ b/basis/db/postgresql/postgresql.factor @@ -4,23 +4,31 @@ USING: arrays assocs alien alien.syntax continuations io kernel math math.parser namespaces make prettyprint quotations sequences debugger db db.postgresql.lib db.postgresql.ffi db.tuples db.types tools.annotations math.ranges -combinators classes locals words tools.walker +combinators classes locals words tools.walker db.private nmake accessors random db.queries destructors db.tuples.private ; USE: tools.walker IN: db.postgresql -TUPLE: postgresql-db < db - host port pgopts pgtty database username password ; +TUPLE: postgresql-db host port pgopts pgtty database username password ; : ( -- postgresql-db ) - postgresql-db new-db ; + postgresql-db new ; + + ( handle -- db-connection ) + postgresql-db-connection new-db-connection + swap >>handle ; + +PRIVATE> TUPLE: postgresql-statement < statement ; TUPLE: postgresql-result-set < result-set ; -M: postgresql-db db-open ( db -- db ) - dup { +M: postgresql-db db-open ( db -- db-connection ) + { [ host>> ] [ port>> ] [ pgopts>> ] @@ -28,10 +36,9 @@ M: postgresql-db db-open ( db -- db ) [ database>> ] [ username>> ] [ password>> ] - } cleave connect-postgres >>handle ; + } cleave connect-postgres ; -M: postgresql-db db-close ( handle -- ) - PQfinish ; +M: postgresql-db-connection db-close ( handle -- ) PQfinish ; M: postgresql-statement bind-statement* ( statement -- ) drop ; @@ -98,25 +105,25 @@ M: postgresql-result-set dispose ( result-set -- ) M: postgresql-statement prepare-statement ( statement -- ) dup - [ db get handle>> f ] dip + [ db-connection get handle>> f ] dip [ sql>> ] [ in-params>> ] bi length f PQprepare postgresql-error >>handle drop ; -M: postgresql-db ( sql in out -- statement ) +M: postgresql-db-connection ( sql in out -- statement ) postgresql-statement new-statement ; -M: postgresql-db ( sql in out -- statement ) +M: postgresql-db-connection ( sql in out -- statement ) dup prepare-statement ; : bind-name% ( -- ) CHAR: $ 0, sql-counter [ inc ] [ get 0# ] bi ; -M: postgresql-db bind% ( spec -- ) +M: postgresql-db-connection bind% ( spec -- ) bind-name% 1, ; -M: postgresql-db bind# ( spec object -- ) +M: postgresql-db-connection bind# ( spec object -- ) [ bind-name% f swap type>> ] dip 1, ; @@ -162,7 +169,7 @@ M: postgresql-db bind# ( spec object -- ) "_seq'');' language sql;" 0% ] query-make ; -M: postgresql-db create-sql-statement ( class -- seq ) +M: postgresql-db-connection create-sql-statement ( class -- seq ) [ [ create-table-sql , ] keep dup db-assigned? [ create-function-sql , ] [ drop ] if @@ -182,13 +189,13 @@ M: postgresql-db create-sql-statement ( class -- seq ) "drop table " 0% 0% drop ] query-make ; -M: postgresql-db drop-sql-statement ( class -- seq ) +M: postgresql-db-connection drop-sql-statement ( class -- seq ) [ [ drop-table-sql , ] keep dup db-assigned? [ drop-function-sql , ] [ drop ] if ] { } make ; -M: postgresql-db ( class -- statement ) +M: postgresql-db-connection ( class -- statement ) [ "select add_" 0% 0% "(" 0% @@ -198,7 +205,7 @@ M: postgresql-db ( class -- statement ) ");" 0% ] query-make ; -M: postgresql-db ( class -- statement ) +M: postgresql-db-connection ( class -- statement ) [ "insert into " 0% 0% "(" 0% @@ -221,10 +228,10 @@ M: postgresql-db ( class -- statement ) ");" 0% ] query-make ; -M: postgresql-db insert-tuple-set-key ( tuple statement -- ) +M: postgresql-db-connection insert-tuple-set-key ( tuple statement -- ) query-modify-tuple ; -M: postgresql-db persistent-table ( -- hashtable ) +M: postgresql-db-connection persistent-table ( -- hashtable ) H{ { +db-assigned-id+ { "integer" "serial" f } } { +user-assigned-id+ { f f f } } @@ -264,7 +271,7 @@ M: postgresql-db persistent-table ( -- hashtable ) } ; ERROR: no-compound-found string object ; -M: postgresql-db compound ( string object -- string' ) +M: postgresql-db-connection compound ( string object -- string' ) over { { "default" [ first number>string " " glue ] } { "varchar" [ first number>string "(" ")" surround append ] } diff --git a/basis/db/queries/queries.factor b/basis/db/queries/queries.factor index a96398ff2c..2d7ea67107 100644 --- a/basis/db/queries/queries.factor +++ b/basis/db/queries/queries.factor @@ -3,7 +3,8 @@ USING: accessors kernel math namespaces make sequences random strings math.parser math.intervals combinators math.bitwise nmake db db.tuples db.types classes words shuffle arrays -destructors continuations db.tuples.private prettyprint ; +destructors continuations db.tuples.private prettyprint +db.private ; IN: db.queries GENERIC: where ( specs obj -- ) @@ -62,7 +63,7 @@ M: retryable execute-statement* ( statement type -- ) dup column-name>> 0% " = " 0% bind% ] interleave ; -M: db ( class -- statement ) +M: db-connection ( class -- statement ) [ "update " 0% 0% " set " 0% @@ -142,7 +143,7 @@ M: string where ( spec obj -- ) object-where ; : where-clause ( tuple specs -- ) dupd filter-slots [ drop ] [ many-where ] if-empty ; -M: db ( tuple table -- sql ) +M: db-connection ( tuple table -- sql ) [ "delete from " 0% 0% where-clause @@ -150,7 +151,7 @@ M: db ( tuple table -- sql ) ERROR: all-slots-ignored class ; -M: db ( tuple class -- statement ) +M: db-connection ( tuple class -- statement ) [ "select " 0% [ dupd filter-ignores ] dip @@ -185,13 +186,13 @@ M: db ( tuple class -- statement ) [ offset>> [ do-offset ] [ drop ] if* ] } 2cleave ; -M: db query>statement ( query -- tuple ) +M: db-connection query>statement ( query -- tuple ) [ tuple>> dup class ] keep [ ] dip make-query* ; ! select ID, NAME, SCORE from EXAM limit 1 offset 3 -M: db ( query -- statement ) +M: db-connection ( query -- statement ) [ tuple>> dup class ] keep [ [ "select count(*) from " 0% 0% where-clause ] query-make ] dip make-query* ; diff --git a/basis/db/sqlite/lib/lib.factor b/basis/db/sqlite/lib/lib.factor index bcd38b172d..b1bc9aa1a2 100644 --- a/basis/db/sqlite/lib/lib.factor +++ b/basis/db/sqlite/lib/lib.factor @@ -5,7 +5,8 @@ namespaces sequences db.sqlite.ffi db combinators continuations db.types calendar.format serialize io.streams.byte-array byte-arrays io.encodings.binary io.backend db.errors present urls io.encodings.utf8 -io.encodings.string accessors shuffle ; +io.encodings.string accessors shuffle io prettyprint +db.private ; IN: db.sqlite.lib ERROR: sqlite-error < db-error n string ; @@ -16,7 +17,7 @@ ERROR: sqlite-sql-error < sql-error n string ; : sqlite-statement-error ( -- * ) SQLITE_ERROR - db get handle>> sqlite3_errmsg sqlite-sql-error ; + db-connection get handle>> sqlite3_errmsg sqlite-sql-error ; : sqlite-check-result ( n -- ) { @@ -42,7 +43,7 @@ ERROR: sqlite-sql-error < sql-error n string ; sqlite3_bind_parameter_index ; : parameter-index ( handle name text -- handle name text ) - >r dupd sqlite-bind-parameter-index r> ; + [ dupd sqlite-bind-parameter-index ] dip ; : sqlite-bind-text ( handle index text -- ) utf8 encode dup length SQLITE_TRANSIENT @@ -124,7 +125,8 @@ ERROR: sqlite-sql-error < sql-error n string ; ] if* (sqlite-bind-type) ; : sqlite-finalize ( handle -- ) sqlite3_finalize sqlite-check-result ; -: sqlite-reset ( handle -- ) sqlite3_reset sqlite-check-result ; +: sqlite-reset ( handle -- ) +"resetting: " write dup . sqlite3_reset sqlite-check-result ; : sqlite-clear-bindings ( handle -- ) sqlite3_clear_bindings sqlite-check-result ; : sqlite-#columns ( query -- int ) sqlite3_column_count ; diff --git a/basis/db/sqlite/sqlite-tests.factor b/basis/db/sqlite/sqlite-tests.factor index b816e414ba..6fb1cd19ad 100644 --- a/basis/db/sqlite/sqlite-tests.factor +++ b/basis/db/sqlite/sqlite-tests.factor @@ -3,8 +3,8 @@ kernel namespaces prettyprint tools.test db.sqlite db sequences continuations db.types db.tuples unicode.case ; IN: db.sqlite.tests -: db-path "test.db" temp-file ; -: test.db db-path ; +: db-path ( -- path ) "test.db" temp-file ; +: test.db ( -- sqlite-db ) db-path ; [ ] [ [ db-path delete-file ] ignore-errors ] unit-test diff --git a/basis/db/sqlite/sqlite.factor b/basis/db/sqlite/sqlite.factor index 32c5ca0075..0f545030a3 100644 --- a/basis/db/sqlite/sqlite.factor +++ b/basis/db/sqlite/sqlite.factor @@ -6,33 +6,43 @@ sequences strings classes.tuple alien.c-types continuations db.sqlite.lib db.sqlite.ffi db.tuples words db.types combinators math.intervals io nmake accessors vectors math.ranges random math.bitwise db.queries destructors db.tuples.private interpolate -io.streams.string multiline make ; +io.streams.string multiline make db.private ; IN: db.sqlite -TUPLE: sqlite-db < db path ; +TUPLE: sqlite-db path ; : ( path -- sqlite-db ) - sqlite-db new-db + sqlite-db new swap >>path ; -M: sqlite-db db-open ( db -- db ) - dup path>> sqlite-open >>handle ; + ( handle -- db-connection ) + sqlite-db-connection new-db-connection + swap >>handle ; + +PRIVATE> + +M: sqlite-db db-open ( db -- db-connection ) + path>> sqlite-open ; + +M: sqlite-db-connection db-close ( handle -- ) sqlite-close ; TUPLE: sqlite-statement < statement ; TUPLE: sqlite-result-set < result-set has-more? ; -M: sqlite-db ( str in out -- obj ) +M: sqlite-db-connection ( str in out -- obj ) ; -M: sqlite-db ( str in out -- obj ) +M: sqlite-db-connection ( str in out -- obj ) sqlite-statement new-statement ; : sqlite-maybe-prepare ( statement -- statement ) dup handle>> [ - db get handle>> over sql>> sqlite-prepare + db-connection get handle>> over sql>> sqlite-prepare >>handle ] unless ; @@ -89,10 +99,10 @@ M: sqlite-statement bind-tuple ( tuple statement -- ) ERROR: sqlite-last-id-fail ; : last-insert-id ( -- id ) - db get handle>> sqlite3_last_insert_rowid + db-connection get handle>> sqlite3_last_insert_rowid dup zero? [ sqlite-last-id-fail ] when ; -M: sqlite-db insert-tuple-set-key ( tuple statement -- ) +M: sqlite-db-connection insert-tuple-set-key ( tuple statement -- ) execute-statement last-insert-id swap set-primary-key ; M: sqlite-result-set #columns ( result-set -- n ) @@ -116,7 +126,7 @@ M: sqlite-statement query-results ( query -- result-set ) dup handle>> sqlite-result-set new-result-set dup advance-row ; -M: sqlite-db create-sql-statement ( class -- statement ) +M: sqlite-db-connection create-sql-statement ( class -- statement ) [ dupd "create table " 0% 0% @@ -135,10 +145,10 @@ M: sqlite-db create-sql-statement ( class -- statement ) "));" 0% ] query-make ; -M: sqlite-db drop-sql-statement ( class -- statement ) +M: sqlite-db-connection drop-sql-statement ( class -- statement ) [ "drop table " 0% 0% ";" 0% drop ] query-make ; -M: sqlite-db ( tuple -- statement ) +M: sqlite-db-connection ( tuple -- statement ) [ "insert into " 0% 0% "(" 0% @@ -159,19 +169,19 @@ M: sqlite-db ( tuple -- statement ) ");" 0% ] query-make ; -M: sqlite-db ( tuple -- statement ) +M: sqlite-db-connection ( tuple -- statement ) ; -M: sqlite-db bind# ( spec obj -- ) +M: sqlite-db-connection bind# ( spec obj -- ) [ [ column-name>> ":" next-sql-counter surround dup 0% ] [ type>> ] bi ] dip 1, ; -M: sqlite-db bind% ( spec -- ) +M: sqlite-db-connection bind% ( spec -- ) dup 1, column-name>> ":" prepend 0% ; -M: sqlite-db persistent-table ( -- assoc ) +M: sqlite-db-connection persistent-table ( -- assoc ) H{ { +db-assigned-id+ { "integer" "integer" f } } { +user-assigned-id+ { f f f } } @@ -306,7 +316,7 @@ M: sqlite-db persistent-table ( -- assoc ) delete-trigger-restrict sqlite-trigger, ] if ; -M: sqlite-db compound ( string seq -- new-string ) +M: sqlite-db-connection compound ( string seq -- new-string ) over { { "default" [ first number>string " " glue ] } { "references" [ diff --git a/basis/db/tuples/tuples-tests.factor b/basis/db/tuples/tuples-tests.factor index b834c2c990..246946c715 100644 --- a/basis/db/tuples/tuples-tests.factor +++ b/basis/db/tuples/tuples-tests.factor @@ -4,7 +4,7 @@ USING: io.files io.files.temp kernel tools.test db db.tuples classes db.types continuations namespaces math math.ranges prettyprint calendar sequences db.sqlite math.intervals db.postgresql accessors random math.bitwise system -math.ranges strings urls fry db.tuples.private ; +math.ranges strings urls fry db.tuples.private db.private ; IN: db.tuples.tests : sqlite-db ( -- sqlite-db ) @@ -33,10 +33,10 @@ IN: db.tuples.tests ! These words leak resources, but are useful for interactivel testing : sqlite-test-db ( -- ) - sqlite-db db-open db set ; + sqlite-db db-open db-connection set ; : postgresql-test-db ( -- ) - postgresql-db db-open db set ; + postgresql-db db-open db-connection set ; TUPLE: person the-id the-name the-number the-real ts date time blob factor-blob url ; diff --git a/basis/db/tuples/tuples.factor b/basis/db/tuples/tuples.factor index 7a5c9e41e6..d2116058d8 100644 --- a/basis/db/tuples/tuples.factor +++ b/basis/db/tuples/tuples.factor @@ -3,20 +3,20 @@ USING: arrays assocs classes db kernel namespaces classes.tuple words sequences slots math accessors math.parser io prettyprint db.types continuations -destructors mirrors sets db.types ; +destructors mirrors sets db.types db.private ; IN: db.tuples -HOOK: create-sql-statement db ( class -- object ) -HOOK: drop-sql-statement db ( class -- object ) +HOOK: create-sql-statement db-connection ( class -- object ) +HOOK: drop-sql-statement db-connection ( class -- object ) -HOOK: db ( class -- object ) -HOOK: db ( class -- object ) -HOOK: db ( class -- object ) -HOOK: db ( tuple class -- object ) -HOOK: db ( tuple class -- tuple ) -HOOK: db ( query -- statement ) -HOOK: query>statement db ( query -- statement ) -HOOK: insert-tuple-set-key db ( tuple statement -- ) +HOOK: db-connection ( class -- object ) +HOOK: db-connection ( class -- object ) +HOOK: db-connection ( class -- object ) +HOOK: db-connection ( tuple class -- object ) +HOOK: db-connection ( tuple class -- tuple ) +HOOK: db-connection ( query -- statement ) +HOOK: query>statement db-connection ( query -- statement ) +HOOK: insert-tuple-set-key db-connection ( tuple statement -- ) > [ ] cache + db-connection get insert-statements>> + [ ] cache [ bind-tuple ] 2keep insert-tuple-set-key ; : insert-user-assigned-statement ( tuple -- ) dup class - db get insert-statements>> [ ] cache + db-connection get insert-statements>> + [ ] cache [ bind-tuple ] keep execute-statement ; : do-select ( exemplar-tuple statement -- tuples ) @@ -117,7 +119,7 @@ M: tuple >query swap >>tuple ; : update-tuple ( tuple -- ) dup class - db get update-statements>> [ ] cache + db-connection get update-statements>> [ ] cache [ bind-tuple ] keep execute-statement ; : delete-tuples ( tuple -- ) diff --git a/basis/db/types/types.factor b/basis/db/types/types.factor index da9fe39b80..33b8923347 100644 --- a/basis/db/types/types.factor +++ b/basis/db/types/types.factor @@ -3,12 +3,12 @@ USING: arrays assocs db kernel math math.parser sequences continuations sequences.deep prettyprint words namespaces slots slots.private classes mirrors -classes.tuple combinators calendar.format symbols -classes.singleton accessors quotations random ; +classes.tuple combinators calendar.format classes.singleton +accessors quotations random db.private ; IN: db.types -HOOK: persistent-table db ( -- hash ) -HOOK: compound db ( string obj -- hash ) +HOOK: persistent-table db-connection ( -- hash ) +HOOK: compound db-connection ( string obj -- hash ) TUPLE: sql-spec class slot-name column-name type primary-key modifiers ; @@ -158,8 +158,8 @@ ERROR: no-sql-type type ; modifiers>> [ lookup-modifier ] map " " join [ "" ] [ " " prepend ] if-empty ; -HOOK: bind% db ( spec -- ) -HOOK: bind# db ( spec obj -- ) +HOOK: bind% db-connection ( spec -- ) +HOOK: bind# db-connection ( spec obj -- ) ERROR: no-column column ; diff --git a/basis/debugger/debugger.factor b/basis/debugger/debugger.factor index 885e2e303c..1440e7ca5d 100644 --- a/basis/debugger/debugger.factor +++ b/basis/debugger/debugger.factor @@ -9,7 +9,7 @@ combinators generic.math classes.builtin classes compiler.units generic.standard vocabs init kernel.private io.encodings accessors math.order destructors source-files parser classes.tuple.parser effects.parser lexer compiler.errors -generic.parser strings.parser ; +generic.parser strings.parser vocabs.parser ; IN: debugger GENERIC: error. ( error -- ) diff --git a/basis/delegate/delegate-tests.factor b/basis/delegate/delegate-tests.factor index d1e7d31656..7d297af1ed 100644 --- a/basis/delegate/delegate-tests.factor +++ b/basis/delegate/delegate-tests.factor @@ -20,7 +20,7 @@ PROTOCOL: baz foo { bar 0 } { whoa 1 } ; CONSULT: baz goodbye these>> ; M: hello foo this>> ; M: hello bar hello-test ; -M: hello whoa >r this>> r> + ; +M: hello whoa [ this>> ] dip + ; GENERIC: bing ( c -- d ) PROTOCOL: bee bing ; diff --git a/basis/delegate/delegate.factor b/basis/delegate/delegate.factor index 57f9b35c96..4da2244114 100644 --- a/basis/delegate/delegate.factor +++ b/basis/delegate/delegate.factor @@ -2,7 +2,8 @@ ! See http://factorcode.org/license.txt for BSD license. USING: accessors parser generic kernel classes classes.tuple words slots assocs sequences arrays vectors definitions -math hashtables sets generalizations namespaces make ; +math hashtables sets generalizations namespaces make +words.symbol ; IN: delegate : protocol-words ( protocol -- words ) diff --git a/basis/formatting/authors.txt b/basis/formatting/authors.txt new file mode 100644 index 0000000000..e091bb8164 --- /dev/null +++ b/basis/formatting/authors.txt @@ -0,0 +1 @@ +John Benediktsson diff --git a/basis/formatting/formatting-docs.factor b/basis/formatting/formatting-docs.factor new file mode 100644 index 0000000000..8db3567c23 --- /dev/null +++ b/basis/formatting/formatting-docs.factor @@ -0,0 +1,129 @@ + +USING: help.syntax help.markup kernel prettyprint sequences strings ; + +IN: formatting + +HELP: printf +{ $values { "format-string" string } } +{ $description + "Writes the arguments (specified on the stack) formatted according to the format string.\n" + "\n" + "Several format specifications exist for handling arguments of different types, and " + "specifying attributes for the result string, including such things as maximum width, " + "padding, and decimals.\n" + { $table + { "%%" "Single %" "" } + { "%P.Ds" "String format" "string" } + { "%P.DS" "String format uppercase" "string" } + { "%c" "Character format" "char" } + { "%C" "Character format uppercase" "char" } + { "%+Pd" "Integer format" "fixnum" } + { "%+P.De" "Scientific notation" "fixnum, float" } + { "%+P.DE" "Scientific notation" "fixnum, float" } + { "%+P.Df" "Fixed format" "fixnum, float" } + { "%+Px" "Hexadecimal" "hex" } + { "%+PX" "Hexadecimal uppercase" "hex" } + } + "\n" + "A plus sign ('+') is used to optionally specify that the number should be " + "formatted with a '+' preceeding it if positive.\n" + "\n" + "Padding ('P') is used to optionally specify the minimum width of the result " + "string, the padding character, and the alignment. By default, the padding " + "character defaults to a space and the alignment defaults to right-aligned. " + "For example:\n" + { $list + "\"%5s\" formats a string padding with spaces up to 5 characters wide." + "\"%08d\" formats an integer padding with zeros up to 3 characters wide." + "\"%'#5f\" formats a float padding with '#' up to 3 characters wide." + "\"%-10d\" formats an integer to 10 characters wide and left-aligns." + } + "\n" + "Digits ('D') is used to optionally specify the maximum digits in the result " + "string. For example:\n" + { $list + "\"%.3s\" formats a string to truncate at 3 characters (from the left)." + "\"%.10f\" formats a float to pad-right with zeros up to 10 digits beyond the decimal point." + "\"%.5E\" formats a float into scientific notation with zeros up to 5 digits beyond the decimal point, but before the exponent." + } +} +{ $examples + { $example + "USING: formatting ;" + "123 \"%05d\" printf" + "00123" } + { $example + "USING: formatting ;" + "HEX: ff \"%04X\" printf" + "00FF" } + { $example + "USING: formatting ;" + "1.23456789 \"%.3f\" printf" + "1.235" } + { $example + "USING: formatting ;" + "1234567890 \"%.5e\" printf" + "1.23457e+09" } + { $example + "USING: formatting ;" + "12 \"%'#4d\" printf" + "##12" } + { $example + "USING: formatting ;" + "1234 \"%+d\" printf" + "+1234" } +} ; + +HELP: sprintf +{ $values { "format-string" string } { "result" string } } +{ $description "Returns the arguments (specified on the stack) formatted according to the format string as a result string." } +{ $see-also printf } ; + +HELP: strftime +{ $values { "format-string" string } } +{ $description + "Writes the timestamp (specified on the stack) formatted according to the format string.\n" + "\n" + "Different attributes of the timestamp can be retrieved using format specifications.\n" + { $table + { "%a" "Abbreviated weekday name." } + { "%A" "Full weekday name." } + { "%b" "Abbreviated month name." } + { "%B" "Full month name." } + { "%c" "Date and time representation." } + { "%d" "Day of the month as a decimal number [01,31]." } + { "%H" "Hour (24-hour clock) as a decimal number [00,23]." } + { "%I" "Hour (12-hour clock) as a decimal number [01,12]." } + { "%j" "Day of the year as a decimal number [001,366]." } + { "%m" "Month as a decimal number [01,12]." } + { "%M" "Minute as a decimal number [00,59]." } + { "%p" "Either AM or PM." } + { "%S" "Second as a decimal number [00,59]." } + { "%U" "Week number of the year (Sunday as the first day of the week) as a decimal number [00,53]." } + { "%w" "Weekday as a decimal number [0(Sunday),6]." } + { "%W" "Week number of the year (Monday as the first day of the week) as a decimal number [00,53]." } + { "%x" "Date representation." } + { "%X" "Time representation." } + { "%y" "Year without century as a decimal number [00,99]." } + { "%Y" "Year with century as a decimal number." } + { "%Z" "Time zone name (no characters if no time zone exists)." } + { "%%" "A literal '%' character." } + } +} +{ $examples + { $unchecked-example + "USING: calendar formatting io ;" + "now \"%c\" strftime print" + "Mon Dec 15 14:40:43 2008" } +} ; + +ARTICLE: "formatting" "Formatted printing" +"The " { $vocab-link "formatting" } " vocabulary is used for formatted printing.\n" +{ $subsection printf } +{ $subsection sprintf } +{ $subsection strftime } +; + +ABOUT: "formatting" + + diff --git a/basis/formatting/formatting-tests.factor b/basis/formatting/formatting-tests.factor new file mode 100644 index 0000000000..8616325a81 --- /dev/null +++ b/basis/formatting/formatting-tests.factor @@ -0,0 +1,97 @@ +! Copyright (C) 2008 John Benediktsson +! See http://factorcode.org/license.txt for BSD license + +USING: calendar kernel formatting tools.test ; + +IN: formatting.tests + +[ "%s" printf ] must-infer +[ "%s" sprintf ] must-infer + +[ t ] [ "" "" sprintf = ] unit-test +[ t ] [ "asdf" "asdf" sprintf = ] unit-test +[ t ] [ "10" 10 "%d" sprintf = ] unit-test +[ t ] [ "+10" 10 "%+d" sprintf = ] unit-test +[ t ] [ "-10" -10 "%d" sprintf = ] unit-test +[ t ] [ " -10" -10 "%5d" sprintf = ] unit-test +[ t ] [ "-0010" -10 "%05d" sprintf = ] unit-test +[ t ] [ "+0010" 10 "%+05d" sprintf = ] unit-test +[ t ] [ "123.456000" 123.456 "%f" sprintf = ] unit-test +[ t ] [ "2.44" 2.436 "%.2f" sprintf = ] unit-test +[ t ] [ "123.10" 123.1 "%01.2f" sprintf = ] unit-test +[ t ] [ "1.2346" 1.23456789 "%.4f" sprintf = ] unit-test +[ t ] [ " 1.23" 1.23456789 "%6.2f" sprintf = ] unit-test +[ t ] [ "1.234000e+08" 123400000 "%e" sprintf = ] unit-test +[ t ] [ "-1.234000e+08" -123400000 "%e" sprintf = ] unit-test +[ t ] [ "1.234567e+08" 123456700 "%e" sprintf = ] unit-test +[ t ] [ "3.625e+08" 362525200 "%.3e" sprintf = ] unit-test +[ t ] [ "2.500000e-03" 0.0025 "%e" sprintf = ] unit-test +[ t ] [ "2.500000E-03" 0.0025 "%E" sprintf = ] unit-test +[ t ] [ " 1.0E+01" 10 "%10.1E" sprintf = ] unit-test +[ t ] [ " -1.0E+01" -10 "%10.1E" sprintf = ] unit-test +[ t ] [ " -1.0E+01" -10 "%+10.1E" sprintf = ] unit-test +[ t ] [ " +1.0E+01" 10 "%+10.1E" sprintf = ] unit-test +[ t ] [ "-001.0E+01" -10 "%+010.1E" sprintf = ] unit-test +[ t ] [ "+001.0E+01" 10 "%+010.1E" sprintf = ] unit-test +[ t ] [ "ff" HEX: ff "%x" sprintf = ] unit-test +[ t ] [ "FF" HEX: ff "%X" sprintf = ] unit-test +[ t ] [ "0f" HEX: f "%02x" sprintf = ] unit-test +[ t ] [ "0F" HEX: f "%02X" sprintf = ] unit-test +[ t ] [ "2008-09-10" + 2008 9 10 "%04d-%02d-%02d" sprintf = ] unit-test +[ t ] [ "Hello, World!" + "Hello, World!" "%s" sprintf = ] unit-test +[ t ] [ "printf test" + "printf test" sprintf = ] unit-test +[ t ] [ "char a = 'a'" + CHAR: a "char %c = 'a'" sprintf = ] unit-test +[ t ] [ "00" HEX: 0 "%02x" sprintf = ] unit-test +[ t ] [ "ff" HEX: ff "%02x" sprintf = ] unit-test +[ t ] [ "0 message(s)" + 0 "message" "%d %s(s)" sprintf = ] unit-test +[ t ] [ "0 message(s) with %" + 0 "message" "%d %s(s) with %%" sprintf = ] unit-test +[ t ] [ "justif: \"left \"" + "left" "justif: \"%-10s\"" sprintf = ] unit-test +[ t ] [ "justif: \" right\"" + "right" "justif: \"%10s\"" sprintf = ] unit-test +[ t ] [ " 3: 0003 zero padded" + 3 " 3: %04d zero padded" sprintf = ] unit-test +[ t ] [ " 3: 3 left justif" + 3 " 3: %-4d left justif" sprintf = ] unit-test +[ t ] [ " 3: 3 right justif" + 3 " 3: %4d right justif" sprintf = ] unit-test +[ t ] [ " -3: -003 zero padded" + -3 " -3: %04d zero padded" sprintf = ] unit-test +[ t ] [ " -3: -3 left justif" + -3 " -3: %-4d left justif" sprintf = ] unit-test +[ t ] [ " -3: -3 right justif" + -3 " -3: %4d right justif" sprintf = ] unit-test +[ t ] [ "There are 10 monkeys in the kitchen" + 10 "kitchen" "There are %d monkeys in the %s" sprintf = ] unit-test +[ f ] [ "%d" 10 "%d" sprintf = ] unit-test +[ t ] [ "[monkey]" "monkey" "[%s]" sprintf = ] unit-test +[ t ] [ "[ monkey]" "monkey" "[%10s]" sprintf = ] unit-test +[ t ] [ "[monkey ]" "monkey" "[%-10s]" sprintf = ] unit-test +[ t ] [ "[0000monkey]" "monkey" "[%010s]" sprintf = ] unit-test +[ t ] [ "[####monkey]" "monkey" "[%'#10s]" sprintf = ] unit-test +[ t ] [ "[many monke]" "many monkeys" "[%10.10s]" sprintf = ] unit-test + + +[ "%H:%M:%S" strftime ] must-infer + +: testtime ( -- timestamp ) + 2008 10 9 12 3 15 instant ; + +[ t ] [ "12:03:15" testtime "%H:%M:%S" strftime = ] unit-test +[ t ] [ "12:03:15" testtime "%X" strftime = ] unit-test + +[ t ] [ "10/09/2008" testtime "%m/%d/%Y" strftime = ] unit-test +[ t ] [ "10/09/2008" testtime "%x" strftime = ] unit-test + +[ t ] [ "Thu" testtime "%a" strftime = ] unit-test +[ t ] [ "Thursday" testtime "%A" strftime = ] unit-test + +[ t ] [ "Oct" testtime "%b" strftime = ] unit-test +[ t ] [ "October" testtime "%B" strftime = ] unit-test + diff --git a/basis/formatting/formatting.factor b/basis/formatting/formatting.factor new file mode 100644 index 0000000000..7dd8458488 --- /dev/null +++ b/basis/formatting/formatting.factor @@ -0,0 +1,186 @@ +! Copyright (C) 2008 John Benediktsson +! See http://factorcode.org/license.txt for BSD license + +USING: accessors arrays ascii calendar combinators fry kernel +io io.encodings.ascii io.files io.streams.string +macros math math.functions math.parser peg.ebnf quotations +sequences splitting strings unicode.case vectors ; + +IN: formatting + +digits ( string -- digits ) + [ 0 ] [ string>number ] if-empty ; + +: pad-digits ( string digits -- string' ) + [ "." split1 ] dip [ CHAR: 0 pad-right ] [ head-slice ] bi "." glue ; + +: max-digits ( n digits -- n' ) + 10 swap ^ [ * round ] keep / ; + +: max-width ( string length -- string' ) + short head ; + +: >exp ( x -- exp base ) + [ + abs 0 swap + [ dup [ 10.0 >= ] [ 1.0 < ] bi or ] + [ dup 10.0 >= + [ 10.0 / [ 1+ ] dip ] + [ 10.0 * [ 1- ] dip ] if + ] [ ] while + ] keep 0 < [ neg ] when ; + +: exp>string ( exp base digits -- string ) + [ max-digits ] keep -rot + [ + [ 0 < "-" "+" ? ] + [ abs number>string 2 CHAR: 0 pad-left ] bi + "e" -rot 3append + ] + [ number>string ] bi* + rot pad-digits prepend ; + +EBNF: parse-printf + +zero = "0" => [[ CHAR: 0 ]] +char = "'" (.) => [[ second ]] + +pad-char = (zero|char)? => [[ CHAR: \s or ]] +pad-align = ("-")? => [[ \ pad-right \ pad-left ? ]] +pad-width = ([0-9])* => [[ >digits ]] +pad = pad-align pad-char pad-width => [[ reverse >quotation dup first 0 = [ drop [ ] ] when ]] + +sign = ("+")? => [[ [ dup CHAR: - swap index [ "+" prepend ] unless ] [ ] ? ]] + +width_ = "." ([0-9])* => [[ second >digits '[ _ max-width ] ]] +width = (width_)? => [[ [ ] or ]] + +digits_ = "." ([0-9])* => [[ second >digits ]] +digits = (digits_)? => [[ 6 or ]] + +fmt-% = "%" => [[ [ "%" ] ]] +fmt-c = "c" => [[ [ 1string ] ]] +fmt-C = "C" => [[ [ 1string >upper ] ]] +fmt-s = "s" => [[ [ ] ]] +fmt-S = "S" => [[ [ >upper ] ]] +fmt-d = "d" => [[ [ >fixnum number>string ] ]] +fmt-e = digits "e" => [[ first '[ >exp _ exp>string ] ]] +fmt-E = digits "E" => [[ first '[ >exp _ exp>string >upper ] ]] +fmt-f = digits "f" => [[ first dup '[ >float _ max-digits number>string _ pad-digits ] ]] +fmt-x = "x" => [[ [ >hex ] ]] +fmt-X = "X" => [[ [ >hex >upper ] ]] +unknown = (.)* => [[ "Unknown directive" throw ]] + +strings_ = fmt-c|fmt-C|fmt-s|fmt-S +strings = pad width strings_ => [[ reverse compose-all ]] + +numbers_ = fmt-d|fmt-e|fmt-E|fmt-f|fmt-x|fmt-X +numbers = sign pad numbers_ => [[ unclip-last prefix compose-all [ fix-sign ] append ]] + +formats = "%" (strings|numbers|fmt-%|unknown) => [[ second '[ _ dip ] ]] + +plain-text = (!("%").)+ => [[ >string '[ _ swap ] ]] + +text = (formats|plain-text)* => [[ reverse [ [ [ push ] keep ] append ] map ]] + +;EBNF + +PRIVATE> + +MACRO: printf ( format-string -- ) + parse-printf [ length ] keep compose-all '[ _ @ reverse [ write ] each ] ; + +: sprintf ( format-string -- result ) + [ printf ] with-string-writer ; inline + + +time ( timestamp -- string ) + [ hour>> ] [ minute>> ] [ second>> floor ] tri 3array + [ number>string zero-pad ] map ":" join ; inline + +: >date ( timestamp -- string ) + [ month>> ] [ day>> ] [ year>> ] tri 3array + [ number>string zero-pad ] map "/" join ; inline + +: >datetime ( timestamp -- string ) + { [ day-of-week day-abbreviation3 ] + [ month>> month-abbreviation ] + [ day>> number>string zero-pad ] + [ >time ] + [ year>> number>string ] + } cleave 3array [ 2array ] dip append " " join ; inline + +: (week-of-year) ( timestamp day -- n ) + [ dup clone 1 >>month 1 >>day day-of-week dup ] dip > [ 7 swap - ] when + [ day-of-year ] dip 2dup < [ 0 2nip ] [ - 7 / 1+ >fixnum ] if ; + +: week-of-year-sunday ( timestamp -- n ) 0 (week-of-year) ; inline + +: week-of-year-monday ( timestamp -- n ) 1 (week-of-year) ; inline + +EBNF: parse-strftime + +fmt-% = "%" => [[ [ "%" ] ]] +fmt-a = "a" => [[ [ dup day-of-week day-abbreviation3 ] ]] +fmt-A = "A" => [[ [ dup day-of-week day-name ] ]] +fmt-b = "b" => [[ [ dup month>> month-abbreviation ] ]] +fmt-B = "B" => [[ [ dup month>> month-name ] ]] +fmt-c = "c" => [[ [ dup >datetime ] ]] +fmt-d = "d" => [[ [ dup day>> number>string zero-pad ] ]] +fmt-H = "H" => [[ [ dup hour>> number>string zero-pad ] ]] +fmt-I = "I" => [[ [ dup hour>> dup 12 > [ 12 - ] when number>string zero-pad ] ]] +fmt-j = "j" => [[ [ dup day-of-year number>string ] ]] +fmt-m = "m" => [[ [ dup month>> number>string zero-pad ] ]] +fmt-M = "M" => [[ [ dup minute>> number>string zero-pad ] ]] +fmt-p = "p" => [[ [ dup hour>> 12 < "AM" "PM" ? ] ]] +fmt-S = "S" => [[ [ dup second>> round number>string zero-pad ] ]] +fmt-U = "U" => [[ [ dup week-of-year-sunday ] ]] +fmt-w = "w" => [[ [ dup day-of-week number>string ] ]] +fmt-W = "W" => [[ [ dup week-of-year-monday ] ]] +fmt-x = "x" => [[ [ dup >date ] ]] +fmt-X = "X" => [[ [ dup >time ] ]] +fmt-y = "y" => [[ [ dup year>> 100 mod number>string ] ]] +fmt-Y = "Y" => [[ [ dup year>> number>string ] ]] +fmt-Z = "Z" => [[ [ "Not yet implemented" throw ] ]] +unknown = (.)* => [[ "Unknown directive" throw ]] + +formats_ = fmt-%|fmt-a|fmt-A|fmt-b|fmt-B|fmt-c|fmt-d|fmt-H|fmt-I| + fmt-j|fmt-m|fmt-M|fmt-p|fmt-S|fmt-U|fmt-w|fmt-W|fmt-x| + fmt-X|fmt-y|fmt-Y|fmt-Z|unknown + +formats = "%" (formats_) => [[ second '[ _ dip ] ]] + +plain-text = (!("%").)+ => [[ >string '[ _ swap ] ]] + +text = (formats|plain-text)* => [[ reverse [ [ [ push ] keep ] append ] map ]] + +;EBNF + +PRIVATE> + +MACRO: strftime ( format-string -- ) + parse-strftime [ length ] keep [ ] join + '[ _ @ reverse concat nip ] ; + + diff --git a/basis/formatting/summary.txt b/basis/formatting/summary.txt new file mode 100644 index 0000000000..da1aa31abb --- /dev/null +++ b/basis/formatting/summary.txt @@ -0,0 +1 @@ +Format data according to a specified format string, and writes (or returns) the result string. diff --git a/basis/fry/fry-docs.factor b/basis/fry/fry-docs.factor index 1dff0942bd..d91f44aecb 100644 --- a/basis/fry/fry-docs.factor +++ b/basis/fry/fry-docs.factor @@ -20,7 +20,7 @@ HELP: '[ { $examples "See " { $link "fry.examples" } "." } ; HELP: >r/r>-in-fry-error -{ $error-description "Thrown by " { $link POSTPONE: '[ } " if the fried quotation contains calls to " { $link >r } " or " { $link r> } ". Explicit retain stack manipulation of this form does not work with fry; use " { $link dip } " instead." } ; +{ $error-description "Thrown by " { $link POSTPONE: '[ } " if the fried quotation contains calls to retain stack manipulation primitives." } ; ARTICLE: "fry.examples" "Examples of fried quotations" "The easiest way to understand fried quotations is to look at some examples." diff --git a/basis/fry/fry-tests.factor b/basis/fry/fry-tests.factor index 0137e8be22..7189450394 100644 --- a/basis/fry/fry-tests.factor +++ b/basis/fry/fry-tests.factor @@ -56,7 +56,7 @@ sequences eval accessors ; 3 '[ [ [ _ 1array ] call 1array ] call 1array ] call ] unit-test -[ "USING: fry kernel ; f '[ >r _ r> ]" eval ] +[ "USING: fry locals.backend ; f '[ load-local _ ]" eval ] [ error>> >r/r>-in-fry-error? ] must-fail-with [ { { "a" 1 } { "b" 2 } { "c" 3 } { "d" 4 } } ] [ diff --git a/basis/fry/fry.factor b/basis/fry/fry.factor index f84ad233cd..e62a42749f 100644 --- a/basis/fry/fry.factor +++ b/basis/fry/fry.factor @@ -25,7 +25,7 @@ M: >r/r>-in-fry-error summary "Explicit retain stack manipulation is not permitted in fried quotations" ; : check-fry ( quot -- quot ) - dup { >r r> load-locals get-local drop-locals } intersect + dup { load-local load-locals get-local drop-locals } intersect empty? [ >r/r>-in-fry-error ] unless ; PREDICATE: fry-specifier < word { _ @ } memq? ; diff --git a/basis/functors/functors.factor b/basis/functors/functors.factor index 2029c0cf25..28bedc8360 100644 --- a/basis/functors/functors.factor +++ b/basis/functors/functors.factor @@ -3,7 +3,8 @@ USING: kernel quotations classes.tuple make combinators generic words interpolate namespaces sequences io.streams.string fry classes.mixin effects lexer parser classes.tuple.parser -effects.parser locals.types locals.parser locals.rewrite.closures ; +effects.parser locals.types locals.parser +locals.rewrite.closures vocabs.parser ; IN: functors : scan-param ( -- obj ) diff --git a/basis/furnace/alloy/alloy-docs.factor b/basis/furnace/alloy/alloy-docs.factor index f108428c90..f21fc237a8 100644 --- a/basis/furnace/alloy/alloy-docs.factor +++ b/basis/furnace/alloy/alloy-docs.factor @@ -5,7 +5,7 @@ HELP: init-furnace-tables { $description "Initializes database tables used by asides, conversations and session management. This word must be invoked inside a " { $link with-db } " scope." } ; HELP: -{ $values { "responder" "a responder" } { "db" db } { "responder'" "an alloy responder" } } +{ $values { "responder" "a responder" } { "db" "a database descriptor" } { "responder'" "an alloy responder" } } { $description "Wraps the responder with support for asides, conversations, sessions and database persistence." } { $examples "The " { $vocab-link "webapps.counter" } " vocabulary uses an alloy to configure the counter:" @@ -21,7 +21,7 @@ HELP: } ; HELP: start-expiring -{ $values { "db" db } } +{ $values { "db" "a database descriptor" } } { $description "Starts a timer which expires old session state from the given database." } ; ARTICLE: "furnace.alloy" "Furnace alloy responder" diff --git a/basis/furnace/auth/auth-docs.factor b/basis/furnace/auth/auth-docs.factor index e7e722344a..4a03d59581 100644 --- a/basis/furnace/auth/auth-docs.factor +++ b/basis/furnace/auth/auth-docs.factor @@ -1,5 +1,5 @@ USING: assocs classes help.markup help.syntax kernel -quotations strings words furnace.auth.providers.db +quotations strings words words.symbol furnace.auth.providers.db checksums.sha2 furnace.auth.providers math byte-arrays http multiline ; IN: furnace.auth diff --git a/basis/furnace/chloe-tags/chloe-tags.factor b/basis/furnace/chloe-tags/chloe-tags.factor index 8ab70ded7b..1c320182bf 100644 --- a/basis/furnace/chloe-tags/chloe-tags.factor +++ b/basis/furnace/chloe-tags/chloe-tags.factor @@ -2,7 +2,7 @@ ! See http://factorcode.org/license.txt for BSD license. USING: accessors arrays kernel combinators assocs namespaces sequences splitting words -fry urls multiline present qualified +fry urls multiline present xml xml.data xml.entities @@ -32,7 +32,7 @@ IN: furnace.chloe-tags [ [ "/" ?tail drop "/" ] dip present 3append ] when* ; : a-url ( href rest query value-name -- url ) - dup [ >r 3drop r> value ] [ + dup [ [ 3drop ] dip value ] [ drop swap parse-query-attr >>query diff --git a/basis/furnace/conversations/conversations-docs.factor b/basis/furnace/conversations/conversations-docs.factor index 4ad2c8a249..2b644ef422 100644 --- a/basis/furnace/conversations/conversations-docs.factor +++ b/basis/furnace/conversations/conversations-docs.factor @@ -1,5 +1,5 @@ USING: help.markup help.syntax urls http words kernel -furnace.sessions furnace.db ; +furnace.sessions furnace.db words.symbol ; IN: furnace.conversations HELP: diff --git a/basis/furnace/db/db-docs.factor b/basis/furnace/db/db-docs.factor index a7ef02b77f..c64356c812 100644 --- a/basis/furnace/db/db-docs.factor +++ b/basis/furnace/db/db-docs.factor @@ -3,7 +3,7 @@ IN: furnace.db HELP: { $values - { "responder" "a responder" } { "db" db } + { "responder" "a responder" } { "db" "a database descriptor" } { "responder'" db-persistence } } { $description "Wraps a responder with database persistence support. The responder's " { $link call-responder* } " method will run in a " { $link with-db } " scope." } ; diff --git a/basis/furnace/db/db.factor b/basis/furnace/db/db.factor index ed18e42a4f..d771d1d2d7 100644 --- a/basis/furnace/db/db.factor +++ b/basis/furnace/db/db.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: kernel accessors continuations namespaces destructors -db db.pools io.pools http.server http.server.filters ; +db db.private db.pools io.pools http.server http.server.filters ; IN: furnace.db TUPLE: db-persistence < filter-responder pool ; @@ -12,6 +12,6 @@ TUPLE: db-persistence < filter-responder pool ; M: db-persistence call-responder* [ pool>> [ acquire-connection ] keep - [ return-connection-later ] [ drop db set ] 2bi + [ return-connection-later ] [ drop db-connection set ] 2bi ] [ call-next-method ] bi ; diff --git a/basis/furnace/sessions/sessions-docs.factor b/basis/furnace/sessions/sessions-docs.factor index 959d6b69b8..7a4de18eaf 100644 --- a/basis/furnace/sessions/sessions-docs.factor +++ b/basis/furnace/sessions/sessions-docs.factor @@ -1,4 +1,6 @@ -USING: help.markup help.syntax io.streams.string quotations strings calendar serialize kernel furnace.db words kernel ; +USING: help.markup help.syntax io.streams.string quotations +strings calendar serialize kernel furnace.db words words.symbol +kernel ; IN: furnace.sessions HELP: diff --git a/basis/grouping/grouping-docs.factor b/basis/grouping/grouping-docs.factor index 3b3a98eabd..e68c0ede1a 100644 --- a/basis/grouping/grouping-docs.factor +++ b/basis/grouping/grouping-docs.factor @@ -20,7 +20,7 @@ ARTICLE: "grouping" "Groups and clumps" { $unchecked-example "dup n groups concat sequence= ." "t" } } { "With clumps, collecting the first element of each subsequence but the last one, together with the last subseqence, yields the original sequence:" - { $unchecked-example "dup n clumps unclip-last >r [ first ] map r> append sequence= ." "t" } + { $unchecked-example "dup n clumps unclip-last [ [ first ] map ] dip append sequence= ." "t" } } } ; diff --git a/basis/heaps/heaps-tests.factor b/basis/heaps/heaps-tests.factor index e28eb3007a..8fa6a274e7 100644 --- a/basis/heaps/heaps-tests.factor +++ b/basis/heaps/heaps-tests.factor @@ -61,7 +61,7 @@ IN: heaps.tests random-alist [ heap-push-all ] keep dup data>> clone swap - ] keep 3 /i [ 2dup >r delete-random r> heap-delete ] times + ] keep 3 /i [ 2dup [ delete-random ] dip heap-delete ] times data>> [ [ key>> ] map ] bi@ [ natural-sort ] bi@ ; diff --git a/basis/help/cookbook/cookbook.factor b/basis/help/cookbook/cookbook.factor index e72fbb439c..0d435a1eaf 100644 --- a/basis/help/cookbook/cookbook.factor +++ b/basis/help/cookbook/cookbook.factor @@ -360,7 +360,7 @@ ARTICLE: "cookbook-pitfalls" "Pitfalls to avoid" { $list "Factor only makes use of one native thread, and Factor threads are scheduled co-operatively. C library calls block the entire VM." "Factor does not hide anything from the programmer, all internals are exposed. It is your responsibility to avoid writing fragile code which depends too much on implementation detail." - { "When a source file uses two vocabularies which define words with the same name, the order of the vocabularies in the " { $link POSTPONE: USE: } " or " { $link POSTPONE: USING: } " forms is important. The parser prints warnings when vocabularies shadow words from other vocabularies; see " { $link "vocabulary-search-shadow" } ". The " { $vocab-link "qualified" } " vocabulary implements qualified naming, which can be used to resolve ambiguities." } + { "When a source file uses two vocabularies which define words with the same name, the order of the vocabularies in the " { $link POSTPONE: USE: } " or " { $link POSTPONE: USING: } " forms is important. The " { $link POSTPONE: QUALIFIED: } " word implements qualified naming, which can be used to resolve ambiguities." } { "If a literal object appears in a word definition, the object itself is pushed on the stack when the word executes, not a copy. If you intend to mutate this object, you must " { $link clone } " it first. See " { $link "syntax-literals" } "." } { "For a discussion of potential issues surrounding the " { $link f } " object, see " { $link "booleans" } "." } { "Factor's object system is quite flexible. Careless usage of union, mixin and predicate classes can lead to similar problems to those caused by ``multiple inheritance'' in other languages. In particular, it is possible to have two classes such that they have a non-empty intersection and yet neither is a subclass of the other. If a generic word defines methods on two such classes, various disambiguation rules are applied to ensure method dispatch remains deterministic, however they may not be what you expect. See " { $link "method-order" } " for details." } diff --git a/basis/help/help.factor b/basis/help/help.factor index 5d12438e0d..cd80a73dad 100644 --- a/basis/help/help.factor +++ b/basis/help/help.factor @@ -1,10 +1,11 @@ ! Copyright (C) 2005, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors arrays io io.styles kernel namespaces make -parser prettyprint sequences words assocs definitions generic -quotations effects slots continuations classes.tuple debugger -combinators vocabs help.stylesheet help.topics help.crossref -help.markup sorting classes vocabs.loader ; +parser prettyprint sequences words words.symbol assocs +definitions generic quotations effects slots continuations +classes.tuple debugger combinators vocabs help.stylesheet +help.topics help.crossref help.markup sorting classes +vocabs.loader ; IN: help GENERIC: word-help* ( word -- content ) diff --git a/basis/help/lint/lint.factor b/basis/help/lint/lint.factor index d5729f218b..9d4de09a87 100644 --- a/basis/help/lint/lint.factor +++ b/basis/help/lint/lint.factor @@ -5,7 +5,8 @@ help.topics words strings classes tools.vocabs namespaces make io io.streams.string prettyprint definitions arrays vectors combinators combinators.short-circuit splitting debugger hashtables sorting effects vocabs vocabs.loader assocs editors -continuations classes.predicate macros math sets eval ; +continuations classes.predicate macros math sets eval +vocabs.parser words.symbol ; IN: help.lint : check-example ( element -- ) diff --git a/basis/help/markup/markup.factor b/basis/help/markup/markup.factor index a7501dc242..bf933cd9f1 100644 --- a/basis/help/markup/markup.factor +++ b/basis/help/markup/markup.factor @@ -3,8 +3,7 @@ USING: accessors arrays definitions generic io kernel assocs hashtables namespaces make parser prettyprint sequences strings io.styles vectors words math sorting splitting classes slots -vocabs help.stylesheet help.topics vocabs.loader alias -quotations ; +vocabs help.stylesheet help.topics vocabs.loader quotations ; IN: help.markup ! Simple markup language. diff --git a/basis/help/syntax/syntax.factor b/basis/help/syntax/syntax.factor index 9a372174ba..9f98ba6d8d 100644 --- a/basis/help/syntax/syntax.factor +++ b/basis/help/syntax/syntax.factor @@ -1,7 +1,8 @@ ! Copyright (C) 2005, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors arrays kernel parser sequences words help -help.topics namespaces vocabs definitions compiler.units ; +help.topics namespaces vocabs definitions compiler.units +vocabs.parser ; IN: help.syntax : HELP: diff --git a/basis/hints/hints.factor b/basis/hints/hints.factor index 240acf74b1..b6af773ce5 100644 --- a/basis/hints/hints.factor +++ b/basis/hints/hints.factor @@ -3,7 +3,8 @@ USING: parser words definitions kernel sequences assocs arrays kernel.private fry combinators accessors vectors strings sbufs byte-arrays byte-vectors io.binary io.streams.string splitting -math generic generic.standard generic.standard.engines classes ; +math generic generic.standard generic.standard.engines classes +hashtables ; IN: hints GENERIC: specializer-predicate ( spec -- quot ) @@ -50,14 +51,10 @@ M: object specializer-declaration class ; ] [ drop f ] if ; : specialized-def ( word -- quot ) - dup def>> swap { - { - [ dup "specializer" word-prop ] - [ "specializer" word-prop specialize-quot ] - } - { [ dup standard-method? ] [ specialize-method ] } - [ drop ] - } cond ; + [ def>> ] keep + [ dup standard-method? [ specialize-method ] [ drop ] if ] + [ "specializer" word-prop [ specialize-quot ] when* ] + bi ; : specialized-length ( specializer -- n ) dup [ array? ] all? [ first ] when length ; @@ -120,3 +117,7 @@ M: object specializer-declaration class ; \ >le { { fixnum fixnum } { bignum fixnum } } "specializer" set-word-prop \ >be { { bignum fixnum } { fixnum fixnum } } "specializer" set-word-prop + +\ hashtable \ at* method { { fixnum hashtable } { word hashtable } } "specializer" set-word-prop + +\ hashtable \ set-at method { { object fixnum object } { object word object } } "specializer" set-word-prop diff --git a/basis/html/templates/fhtml/fhtml.factor b/basis/html/templates/fhtml/fhtml.factor index 7742ff9bc6..992b660070 100644 --- a/basis/html/templates/fhtml/fhtml.factor +++ b/basis/html/templates/fhtml/fhtml.factor @@ -3,7 +3,7 @@ ! See http://factorcode.org/license.txt for BSD license. USING: continuations sequences kernel namespaces debugger combinators math quotations generic strings splitting -accessors assocs fry +accessors assocs fry vocabs.parser parser lexer io io.files io.streams.string io.encodings.utf8 html.elements html.templates ; diff --git a/basis/http/http.factor b/basis/http/http.factor index bbb0335ae4..0aeb771c11 100644 --- a/basis/http/http.factor +++ b/basis/http/http.factor @@ -8,7 +8,7 @@ calendar.format present urls io io.encodings io.encodings.iana io.encodings.binary io.encodings.8-bit -unicode.case unicode.categories qualified +unicode.case unicode.categories http.parsers ; diff --git a/basis/io/backend/unix/unix.factor b/basis/io/backend/unix/unix.factor index e8ace90d73..e25550590f 100644 --- a/basis/io/backend/unix/unix.factor +++ b/basis/io/backend/unix/unix.factor @@ -3,7 +3,7 @@ USING: alien alien.c-types alien.syntax generic assocs kernel kernel.private math io.ports sequences strings sbufs threads unix vectors io.buffers io.backend io.encodings math.parser -continuations system libc qualified namespaces make io.timeouts +continuations system libc namespaces make io.timeouts io.encodings.utf8 destructors accessors summary combinators locals unix.time fry io.backend.unix.multiplexers ; QUALIFIED: io diff --git a/basis/io/backend/windows/nt/nt.factor b/basis/io/backend/windows/nt/nt.factor index b8887debed..493a735f7f 100755 --- a/basis/io/backend/windows/nt/nt.factor +++ b/basis/io/backend/windows/nt/nt.factor @@ -3,7 +3,7 @@ continuations destructors io io.backend io.ports io.timeouts io.backend.windows io.files.windows io.files.windows.nt io.files io.pathnames io.buffers io.streams.c libc kernel math namespaces sequences threads windows windows.errors windows.kernel32 -strings splitting qualified ascii system accessors locals ; +strings splitting ascii system accessors locals ; QUALIFIED: windows.winsock IN: io.backend.windows.nt diff --git a/basis/io/encodings/8-bit/8-bit.factor b/basis/io/encodings/8-bit/8-bit.factor index 2cafb6be47..6ac0ed399e 100644 --- a/basis/io/encodings/8-bit/8-bit.factor +++ b/basis/io/encodings/8-bit/8-bit.factor @@ -2,7 +2,8 @@ ! See http://factorcode.org/license.txt for BSD license. USING: math.parser arrays io.encodings sequences kernel assocs hashtables io.encodings.ascii generic parser classes.tuple words -io io.files splitting namespaces math compiler.units accessors ; +words.symbol io io.files splitting namespaces math +compiler.units accessors ; IN: io.encodings.8-bit read write close ; EXCLUDE: io.sockets => accept ; diff --git a/basis/lcs/diff2html/diff2html.factor b/basis/lcs/diff2html/diff2html.factor index b92eeb1250..ebbb0f3786 100644 --- a/basis/lcs/diff2html/diff2html.factor +++ b/basis/lcs/diff2html/diff2html.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 Slava Pestov ! See http://factorcode.org/license.txt for BSD license. -USING: lcs html.elements kernel qualified ; +USING: lcs html.elements kernel ; FROM: accessors => item>> ; FROM: io => write ; FROM: sequences => each if-empty ; diff --git a/basis/lcs/lcs.factor b/basis/lcs/lcs.factor index 759e923a34..8c67590697 100644 --- a/basis/lcs/lcs.factor +++ b/basis/lcs/lcs.factor @@ -5,7 +5,7 @@ IN: lcs r [ 1+ ] bi@ r> min min ; + 0 1 ? + [ [ 1+ ] bi@ ] dip min min ; : lcs-step ( insert delete change same? -- next ) 1 -1./0. ? + max max ; ! -1./0. is -inf (float) diff --git a/basis/listener/listener-tests.factor b/basis/listener/listener-tests.factor index e681bac314..61aa323924 100644 --- a/basis/listener/listener-tests.factor +++ b/basis/listener/listener-tests.factor @@ -1,6 +1,6 @@ USING: io io.streams.string io.streams.duplex listener tools.test parser math namespaces continuations vocabs kernel -compiler.units eval ; +compiler.units eval vocabs.parser ; IN: listener.tests : hello "Hi" print ; parsing diff --git a/basis/listener/listener.factor b/basis/listener/listener.factor index f60403055e..88a90b72e2 100644 --- a/basis/listener/listener.factor +++ b/basis/listener/listener.factor @@ -4,7 +4,7 @@ USING: arrays hashtables io kernel math math.parser memory namespaces parser lexer sequences strings io.styles vectors words generic system combinators continuations debugger definitions compiler.units accessors colors prettyprint fry -sets ; +sets vocabs.parser ; IN: listener GENERIC: stream-read-quot ( stream -- quot/f ) diff --git a/basis/locals/locals-tests.factor b/basis/locals/locals-tests.factor index b5c201a5d9..e7f0b74194 100644 --- a/basis/locals/locals-tests.factor +++ b/basis/locals/locals-tests.factor @@ -2,7 +2,7 @@ USING: locals math sequences tools.test hashtables words kernel namespaces arrays strings prettyprint io.streams.string parser accessors generic eval combinators combinators.short-circuit combinators.short-circuit.smart math.order math.functions -definitions compiler.units fry lexer ; +definitions compiler.units fry lexer words.symbol ; IN: locals.tests :: foo ( a b -- a a ) a a ; diff --git a/basis/locals/parser/parser.factor b/basis/locals/parser/parser.factor index e6ab6c003c..c5b34556bc 100644 --- a/basis/locals/parser/parser.factor +++ b/basis/locals/parser/parser.factor @@ -3,7 +3,7 @@ USING: accessors arrays combinators effects.parser generic.parser kernel lexer locals.errors locals.rewrite.closures locals.types make namespaces parser -quotations sequences splitting words ; +quotations sequences splitting words vocabs.parser ; IN: locals.parser : make-local ( name -- word ) diff --git a/basis/locals/rewrite/point-free/point-free.factor b/basis/locals/rewrite/point-free/point-free.factor index bd322bfff3..33e0f4d3b3 100644 --- a/basis/locals/rewrite/point-free/point-free.factor +++ b/basis/locals/rewrite/point-free/point-free.factor @@ -30,7 +30,10 @@ M: local-writer localize read-local-quot [ set-local-value ] append ; M: def localize - local>> [ prefix ] [ local-reader? [ 1array >r ] [ >r ] ? ] bi ; + local>> + [ prefix ] + [ local-reader? [ 1array load-local ] [ load-local ] ? ] + bi ; M: object localize 1quotation ; diff --git a/basis/locals/rewrite/sugar/sugar.factor b/basis/locals/rewrite/sugar/sugar.factor index 05b1e2345e..835fa6e421 100644 --- a/basis/locals/rewrite/sugar/sugar.factor +++ b/basis/locals/rewrite/sugar/sugar.factor @@ -101,7 +101,7 @@ M: hashtable rewrite-sugar* rewrite-element ; M: wrapper rewrite-sugar* rewrite-element ; M: word rewrite-sugar* - dup { >r r> load-locals get-local drop-locals } memq? + dup { load-locals get-local drop-locals } memq? [ >r/r>-in-lambda-error ] [ call-next-method ] if ; M: object rewrite-sugar* , ; diff --git a/basis/logging/insomniac/insomniac.factor b/basis/logging/insomniac/insomniac.factor index 7c1db5b7c0..91baae631f 100644 --- a/basis/logging/insomniac/insomniac.factor +++ b/basis/logging/insomniac/insomniac.factor @@ -2,7 +2,7 @@ ! See http://factorcode.org/license.txt for BSD license. USING: logging.analysis logging.server logging smtp kernel io.files io.streams.string namespaces make alarms assocs -io.encodings.utf8 accessors calendar sequences qualified ; +io.encodings.utf8 accessors calendar sequences ; QUALIFIED: io.sockets IN: logging.insomniac diff --git a/basis/logging/logging.factor b/basis/logging/logging.factor index 47de880559..fb6b328990 100644 --- a/basis/logging/logging.factor +++ b/basis/logging/logging.factor @@ -4,7 +4,7 @@ USING: logging.server sequences namespaces concurrency.messaging words kernel arrays shuffle tools.annotations prettyprint.config prettyprint debugger io.streams.string splitting continuations effects generalizations parser strings -quotations fry symbols accessors ; +quotations fry accessors ; IN: logging SYMBOLS: DEBUG NOTICE WARNING ERROR CRITICAL ; diff --git a/basis/match/match.factor b/basis/match/match.factor index 7d393dadc9..fee06686b8 100644 --- a/basis/match/match.factor +++ b/basis/match/match.factor @@ -47,7 +47,7 @@ MACRO: match-cond ( assoc -- ) [ "Fall-through in match-cond" throw ] [ first2 - >r [ dupd match ] curry r> + [ [ dupd match ] curry ] dip [ bind ] curry rot [ ?if ] 2curry append ] reduce ; diff --git a/basis/math/blas/cblas/authors.txt b/basis/math/blas/cblas/authors.txt new file mode 100644 index 0000000000..f13c9c1e77 --- /dev/null +++ b/basis/math/blas/cblas/authors.txt @@ -0,0 +1 @@ +Joe Groff diff --git a/basis/math/blas/cblas/cblas.factor b/basis/math/blas/cblas/cblas.factor new file mode 100644 index 0000000000..4c0a88f929 --- /dev/null +++ b/basis/math/blas/cblas/cblas.factor @@ -0,0 +1,559 @@ +USING: alien alien.c-types alien.syntax kernel system combinators ; +IN: math.blas.cblas + +<< "cblas" { + { [ os macosx? ] [ "libblas.dylib" "cdecl" add-library ] } + { [ os windows? ] [ "blas.dll" "cdecl" add-library ] } + { [ os openbsd? ] [ "libcblas.so" "cdecl" add-library ] } + { [ os freebsd? ] [ "libcblas.so" "cdecl" add-library ] } + [ "libblas.so" "cdecl" add-library ] +} cond >> + +LIBRARY: cblas + +TYPEDEF: int CBLAS_ORDER +: CblasRowMajor 101 ; inline +: CblasColMajor 102 ; inline + +TYPEDEF: int CBLAS_TRANSPOSE +: CblasNoTrans 111 ; inline +: CblasTrans 112 ; inline +: CblasConjTrans 113 ; inline + +TYPEDEF: int CBLAS_UPLO +: CblasUpper 121 ; inline +: CblasLower 122 ; inline + +TYPEDEF: int CBLAS_DIAG +: CblasNonUnit 131 ; inline +: CblasUnit 132 ; inline + +TYPEDEF: int CBLAS_SIDE +: CblasLeft 141 ; inline +: CblasRight 142 ; inline + +TYPEDEF: int CBLAS_INDEX + +C-STRUCT: float-complex + { "float" "real" } + { "float" "imag" } ; +C-STRUCT: double-complex + { "double" "real" } + { "double" "imag" } ; + +! Level 1 BLAS (scalar-vector and vector-vector) + +FUNCTION: float cblas_sdsdot + ( int N, float alpha, float* X, int incX, float* Y, int incY ) ; +FUNCTION: double cblas_dsdot + ( int N, float* X, int incX, float* Y, int incY ) ; +FUNCTION: float cblas_sdot + ( int N, float* X, int incX, float* Y, int incY ) ; +FUNCTION: double cblas_ddot + ( int N, double* X, int incX, double* Y, int incY ) ; + +FUNCTION: void cblas_cdotu_sub + ( int N, void* X, int incX, void* Y, int incY, void* dotu ) ; +FUNCTION: void cblas_cdotc_sub + ( int N, void* X, int incX, void* Y, int incY, void* dotc ) ; + +FUNCTION: void cblas_zdotu_sub + ( int N, void* X, int incX, void* Y, int incY, void* dotu ) ; +FUNCTION: void cblas_zdotc_sub + ( int N, void* X, int incX, void* Y, int incY, void* dotc ) ; + +FUNCTION: float cblas_snrm2 + ( int N, float* X, int incX ) ; +FUNCTION: float cblas_sasum + ( int N, float* X, int incX ) ; + +FUNCTION: double cblas_dnrm2 + ( int N, double* X, int incX ) ; +FUNCTION: double cblas_dasum + ( int N, double* X, int incX ) ; + +FUNCTION: float cblas_scnrm2 + ( int N, void* X, int incX ) ; +FUNCTION: float cblas_scasum + ( int N, void* X, int incX ) ; + +FUNCTION: double cblas_dznrm2 + ( int N, void* X, int incX ) ; +FUNCTION: double cblas_dzasum + ( int N, void* X, int incX ) ; + +FUNCTION: CBLAS_INDEX cblas_isamax + ( int N, float* X, int incX ) ; +FUNCTION: CBLAS_INDEX cblas_idamax + ( int N, double* X, int incX ) ; +FUNCTION: CBLAS_INDEX cblas_icamax + ( int N, void* X, int incX ) ; +FUNCTION: CBLAS_INDEX cblas_izamax + ( int N, void* X, int incX ) ; + +FUNCTION: void cblas_sswap + ( int N, float* X, int incX, float* Y, int incY ) ; +FUNCTION: void cblas_scopy + ( int N, float* X, int incX, float* Y, int incY ) ; +FUNCTION: void cblas_saxpy + ( int N, float alpha, float* X, int incX, float* Y, int incY ) ; + +FUNCTION: void cblas_dswap + ( int N, double* X, int incX, double* Y, int incY ) ; +FUNCTION: void cblas_dcopy + ( int N, double* X, int incX, double* Y, int incY ) ; +FUNCTION: void cblas_daxpy + ( int N, double alpha, double* X, int incX, double* Y, int incY ) ; + +FUNCTION: void cblas_cswap + ( int N, void* X, int incX, void* Y, int incY ) ; +FUNCTION: void cblas_ccopy + ( int N, void* X, int incX, void* Y, int incY ) ; +FUNCTION: void cblas_caxpy + ( int N, void* alpha, void* X, int incX, void* Y, int incY ) ; + +FUNCTION: void cblas_zswap + ( int N, void* X, int incX, void* Y, int incY ) ; +FUNCTION: void cblas_zcopy + ( int N, void* X, int incX, void* Y, int incY ) ; +FUNCTION: void cblas_zaxpy + ( int N, void* alpha, void* X, int incX, void* Y, int incY ) ; + +FUNCTION: void cblas_sscal + ( int N, float alpha, float* X, int incX ) ; +FUNCTION: void cblas_dscal + ( int N, double alpha, double* X, int incX ) ; +FUNCTION: void cblas_cscal + ( int N, void* alpha, void* X, int incX ) ; +FUNCTION: void cblas_zscal + ( int N, void* alpha, void* X, int incX ) ; +FUNCTION: void cblas_csscal + ( int N, float alpha, void* X, int incX ) ; +FUNCTION: void cblas_zdscal + ( int N, double alpha, void* X, int incX ) ; + +FUNCTION: void cblas_srotg + ( float* a, float* b, float* c, float* s ) ; +FUNCTION: void cblas_srotmg + ( float* d1, float* d2, float* b1, float b2, float* P ) ; +FUNCTION: void cblas_srot + ( int N, float* X, int incX, float* Y, int incY, float c, float s ) ; +FUNCTION: void cblas_srotm + ( int N, float* X, int incX, float* Y, int incY, float* P ) ; + +FUNCTION: void cblas_drotg + ( double* a, double* b, double* c, double* s ) ; +FUNCTION: void cblas_drotmg + ( double* d1, double* d2, double* b1, double b2, double* P ) ; +FUNCTION: void cblas_drot + ( int N, double* X, int incX, double* Y, int incY, double c, double s ) ; +FUNCTION: void cblas_drotm + ( int N, double* X, int incX, double* Y, int incY, double* P ) ; + +! Level 2 BLAS (matrix-vector) + +FUNCTION: void cblas_sgemv ( CBLAS_ORDER Order, + CBLAS_TRANSPOSE TransA, int M, int N, + float alpha, float* A, int lda, + float* X, int incX, float beta, + float* Y, int incY ) ; +FUNCTION: void cblas_sgbmv ( CBLAS_ORDER Order, + CBLAS_TRANSPOSE TransA, int M, int N, + int KL, int KU, float alpha, + float* A, int lda, float* X, + int incX, float beta, float* Y, int incY ) ; +FUNCTION: void cblas_strmv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, float* A, int lda, + float* X, int incX ) ; +FUNCTION: void cblas_stbmv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, int K, float* A, int lda, + float* X, int incX ) ; +FUNCTION: void cblas_stpmv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, float* Ap, float* X, int incX ) ; +FUNCTION: void cblas_strsv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, float* A, int lda, float* X, + int incX ) ; +FUNCTION: void cblas_stbsv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, int K, float* A, int lda, + float* X, int incX ) ; +FUNCTION: void cblas_stpsv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, float* Ap, float* X, int incX ) ; + +FUNCTION: void cblas_dgemv ( CBLAS_ORDER Order, + CBLAS_TRANSPOSE TransA, int M, int N, + double alpha, double* A, int lda, + double* X, int incX, double beta, + double* Y, int incY ) ; +FUNCTION: void cblas_dgbmv ( CBLAS_ORDER Order, + CBLAS_TRANSPOSE TransA, int M, int N, + int KL, int KU, double alpha, + double* A, int lda, double* X, + int incX, double beta, double* Y, int incY ) ; +FUNCTION: void cblas_dtrmv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, double* A, int lda, + double* X, int incX ) ; +FUNCTION: void cblas_dtbmv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, int K, double* A, int lda, + double* X, int incX ) ; +FUNCTION: void cblas_dtpmv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, double* Ap, double* X, int incX ) ; +FUNCTION: void cblas_dtrsv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, double* A, int lda, double* X, + int incX ) ; +FUNCTION: void cblas_dtbsv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, int K, double* A, int lda, + double* X, int incX ) ; +FUNCTION: void cblas_dtpsv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, double* Ap, double* X, int incX ) ; + +FUNCTION: void cblas_cgemv ( CBLAS_ORDER Order, + CBLAS_TRANSPOSE TransA, int M, int N, + void* alpha, void* A, int lda, + void* X, int incX, void* beta, + void* Y, int incY ) ; +FUNCTION: void cblas_cgbmv ( CBLAS_ORDER Order, + CBLAS_TRANSPOSE TransA, int M, int N, + int KL, int KU, void* alpha, + void* A, int lda, void* X, + int incX, void* beta, void* Y, int incY ) ; +FUNCTION: void cblas_ctrmv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, void* A, int lda, + void* X, int incX ) ; +FUNCTION: void cblas_ctbmv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, int K, void* A, int lda, + void* X, int incX ) ; +FUNCTION: void cblas_ctpmv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, void* Ap, void* X, int incX ) ; +FUNCTION: void cblas_ctrsv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, void* A, int lda, void* X, + int incX ) ; +FUNCTION: void cblas_ctbsv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, int K, void* A, int lda, + void* X, int incX ) ; +FUNCTION: void cblas_ctpsv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, void* Ap, void* X, int incX ) ; + +FUNCTION: void cblas_zgemv ( CBLAS_ORDER Order, + CBLAS_TRANSPOSE TransA, int M, int N, + void* alpha, void* A, int lda, + void* X, int incX, void* beta, + void* Y, int incY ) ; +FUNCTION: void cblas_zgbmv ( CBLAS_ORDER Order, + CBLAS_TRANSPOSE TransA, int M, int N, + int KL, int KU, void* alpha, + void* A, int lda, void* X, + int incX, void* beta, void* Y, int incY ) ; +FUNCTION: void cblas_ztrmv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, void* A, int lda, + void* X, int incX ) ; +FUNCTION: void cblas_ztbmv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, int K, void* A, int lda, + void* X, int incX ) ; +FUNCTION: void cblas_ztpmv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, void* Ap, void* X, int incX ) ; +FUNCTION: void cblas_ztrsv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, void* A, int lda, void* X, + int incX ) ; +FUNCTION: void cblas_ztbsv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, int K, void* A, int lda, + void* X, int incX ) ; +FUNCTION: void cblas_ztpsv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE TransA, CBLAS_DIAG Diag, + int N, void* Ap, void* X, int incX ) ; + + +FUNCTION: void cblas_ssymv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, float alpha, float* A, + int lda, float* X, int incX, + float beta, float* Y, int incY ) ; +FUNCTION: void cblas_ssbmv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, int K, float alpha, float* A, + int lda, float* X, int incX, + float beta, float* Y, int incY ) ; +FUNCTION: void cblas_sspmv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, float alpha, float* Ap, + float* X, int incX, + float beta, float* Y, int incY ) ; +FUNCTION: void cblas_sger ( CBLAS_ORDER Order, int M, int N, + float alpha, float* X, int incX, + float* Y, int incY, float* A, int lda ) ; +FUNCTION: void cblas_ssyr ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, float alpha, float* X, + int incX, float* A, int lda ) ; +FUNCTION: void cblas_sspr ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, float alpha, float* X, + int incX, float* Ap ) ; +FUNCTION: void cblas_ssyr2 ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, float alpha, float* X, + int incX, float* Y, int incY, float* A, + int lda ) ; +FUNCTION: void cblas_sspr2 ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, float alpha, float* X, + int incX, float* Y, int incY, float* A ) ; + +FUNCTION: void cblas_dsymv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, double alpha, double* A, + int lda, double* X, int incX, + double beta, double* Y, int incY ) ; +FUNCTION: void cblas_dsbmv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, int K, double alpha, double* A, + int lda, double* X, int incX, + double beta, double* Y, int incY ) ; +FUNCTION: void cblas_dspmv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, double alpha, double* Ap, + double* X, int incX, + double beta, double* Y, int incY ) ; +FUNCTION: void cblas_dger ( CBLAS_ORDER Order, int M, int N, + double alpha, double* X, int incX, + double* Y, int incY, double* A, int lda ) ; +FUNCTION: void cblas_dsyr ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, double alpha, double* X, + int incX, double* A, int lda ) ; +FUNCTION: void cblas_dspr ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, double alpha, double* X, + int incX, double* Ap ) ; +FUNCTION: void cblas_dsyr2 ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, double alpha, double* X, + int incX, double* Y, int incY, double* A, + int lda ) ; +FUNCTION: void cblas_dspr2 ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, double alpha, double* X, + int incX, double* Y, int incY, double* A ) ; + + +FUNCTION: void cblas_chemv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, void* alpha, void* A, + int lda, void* X, int incX, + void* beta, void* Y, int incY ) ; +FUNCTION: void cblas_chbmv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, int K, void* alpha, void* A, + int lda, void* X, int incX, + void* beta, void* Y, int incY ) ; +FUNCTION: void cblas_chpmv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, void* alpha, void* Ap, + void* X, int incX, + void* beta, void* Y, int incY ) ; +FUNCTION: void cblas_cgeru ( CBLAS_ORDER Order, int M, int N, + void* alpha, void* X, int incX, + void* Y, int incY, void* A, int lda ) ; +FUNCTION: void cblas_cgerc ( CBLAS_ORDER Order, int M, int N, + void* alpha, void* X, int incX, + void* Y, int incY, void* A, int lda ) ; +FUNCTION: void cblas_cher ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, float alpha, void* X, int incX, + void* A, int lda ) ; +FUNCTION: void cblas_chpr ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, float alpha, void* X, + int incX, void* A ) ; +FUNCTION: void cblas_cher2 ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, int N, + void* alpha, void* X, int incX, + void* Y, int incY, void* A, int lda ) ; +FUNCTION: void cblas_chpr2 ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, int N, + void* alpha, void* X, int incX, + void* Y, int incY, void* Ap ) ; + +FUNCTION: void cblas_zhemv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, void* alpha, void* A, + int lda, void* X, int incX, + void* beta, void* Y, int incY ) ; +FUNCTION: void cblas_zhbmv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, int K, void* alpha, void* A, + int lda, void* X, int incX, + void* beta, void* Y, int incY ) ; +FUNCTION: void cblas_zhpmv ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, void* alpha, void* Ap, + void* X, int incX, + void* beta, void* Y, int incY ) ; +FUNCTION: void cblas_zgeru ( CBLAS_ORDER Order, int M, int N, + void* alpha, void* X, int incX, + void* Y, int incY, void* A, int lda ) ; +FUNCTION: void cblas_zgerc ( CBLAS_ORDER Order, int M, int N, + void* alpha, void* X, int incX, + void* Y, int incY, void* A, int lda ) ; +FUNCTION: void cblas_zher ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, double alpha, void* X, int incX, + void* A, int lda ) ; +FUNCTION: void cblas_zhpr ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + int N, double alpha, void* X, + int incX, void* A ) ; +FUNCTION: void cblas_zher2 ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, int N, + void* alpha, void* X, int incX, + void* Y, int incY, void* A, int lda ) ; +FUNCTION: void cblas_zhpr2 ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, int N, + void* alpha, void* X, int incX, + void* Y, int incY, void* Ap ) ; + +! Level 3 BLAS (matrix-matrix) + +FUNCTION: void cblas_sgemm ( CBLAS_ORDER Order, CBLAS_TRANSPOSE TransA, + CBLAS_TRANSPOSE TransB, int M, int N, + int K, float alpha, float* A, + int lda, float* B, int ldb, + float beta, float* C, int ldc ) ; +FUNCTION: void cblas_ssymm ( CBLAS_ORDER Order, CBLAS_SIDE Side, + CBLAS_UPLO Uplo, int M, int N, + float alpha, float* A, int lda, + float* B, int ldb, float beta, + float* C, int ldc ) ; +FUNCTION: void cblas_ssyrk ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE Trans, int N, int K, + float alpha, float* A, int lda, + float beta, float* C, int ldc ) ; +FUNCTION: void cblas_ssyr2k ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE Trans, int N, int K, + float alpha, float* A, int lda, + float* B, int ldb, float beta, + float* C, int ldc ) ; +FUNCTION: void cblas_strmm ( CBLAS_ORDER Order, CBLAS_SIDE Side, + CBLAS_UPLO Uplo, CBLAS_TRANSPOSE TransA, + CBLAS_DIAG Diag, int M, int N, + float alpha, float* A, int lda, + float* B, int ldb ) ; +FUNCTION: void cblas_strsm ( CBLAS_ORDER Order, CBLAS_SIDE Side, + CBLAS_UPLO Uplo, CBLAS_TRANSPOSE TransA, + CBLAS_DIAG Diag, int M, int N, + float alpha, float* A, int lda, + float* B, int ldb ) ; + +FUNCTION: void cblas_dgemm ( CBLAS_ORDER Order, CBLAS_TRANSPOSE TransA, + CBLAS_TRANSPOSE TransB, int M, int N, + int K, double alpha, double* A, + int lda, double* B, int ldb, + double beta, double* C, int ldc ) ; +FUNCTION: void cblas_dsymm ( CBLAS_ORDER Order, CBLAS_SIDE Side, + CBLAS_UPLO Uplo, int M, int N, + double alpha, double* A, int lda, + double* B, int ldb, double beta, + double* C, int ldc ) ; +FUNCTION: void cblas_dsyrk ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE Trans, int N, int K, + double alpha, double* A, int lda, + double beta, double* C, int ldc ) ; +FUNCTION: void cblas_dsyr2k ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE Trans, int N, int K, + double alpha, double* A, int lda, + double* B, int ldb, double beta, + double* C, int ldc ) ; +FUNCTION: void cblas_dtrmm ( CBLAS_ORDER Order, CBLAS_SIDE Side, + CBLAS_UPLO Uplo, CBLAS_TRANSPOSE TransA, + CBLAS_DIAG Diag, int M, int N, + double alpha, double* A, int lda, + double* B, int ldb ) ; +FUNCTION: void cblas_dtrsm ( CBLAS_ORDER Order, CBLAS_SIDE Side, + CBLAS_UPLO Uplo, CBLAS_TRANSPOSE TransA, + CBLAS_DIAG Diag, int M, int N, + double alpha, double* A, int lda, + double* B, int ldb ) ; + +FUNCTION: void cblas_cgemm ( CBLAS_ORDER Order, CBLAS_TRANSPOSE TransA, + CBLAS_TRANSPOSE TransB, int M, int N, + int K, void* alpha, void* A, + int lda, void* B, int ldb, + void* beta, void* C, int ldc ) ; +FUNCTION: void cblas_csymm ( CBLAS_ORDER Order, CBLAS_SIDE Side, + CBLAS_UPLO Uplo, int M, int N, + void* alpha, void* A, int lda, + void* B, int ldb, void* beta, + void* C, int ldc ) ; +FUNCTION: void cblas_csyrk ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE Trans, int N, int K, + void* alpha, void* A, int lda, + void* beta, void* C, int ldc ) ; +FUNCTION: void cblas_csyr2k ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE Trans, int N, int K, + void* alpha, void* A, int lda, + void* B, int ldb, void* beta, + void* C, int ldc ) ; +FUNCTION: void cblas_ctrmm ( CBLAS_ORDER Order, CBLAS_SIDE Side, + CBLAS_UPLO Uplo, CBLAS_TRANSPOSE TransA, + CBLAS_DIAG Diag, int M, int N, + void* alpha, void* A, int lda, + void* B, int ldb ) ; +FUNCTION: void cblas_ctrsm ( CBLAS_ORDER Order, CBLAS_SIDE Side, + CBLAS_UPLO Uplo, CBLAS_TRANSPOSE TransA, + CBLAS_DIAG Diag, int M, int N, + void* alpha, void* A, int lda, + void* B, int ldb ) ; + +FUNCTION: void cblas_zgemm ( CBLAS_ORDER Order, CBLAS_TRANSPOSE TransA, + CBLAS_TRANSPOSE TransB, int M, int N, + int K, void* alpha, void* A, + int lda, void* B, int ldb, + void* beta, void* C, int ldc ) ; +FUNCTION: void cblas_zsymm ( CBLAS_ORDER Order, CBLAS_SIDE Side, + CBLAS_UPLO Uplo, int M, int N, + void* alpha, void* A, int lda, + void* B, int ldb, void* beta, + void* C, int ldc ) ; +FUNCTION: void cblas_zsyrk ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE Trans, int N, int K, + void* alpha, void* A, int lda, + void* beta, void* C, int ldc ) ; +FUNCTION: void cblas_zsyr2k ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE Trans, int N, int K, + void* alpha, void* A, int lda, + void* B, int ldb, void* beta, + void* C, int ldc ) ; +FUNCTION: void cblas_ztrmm ( CBLAS_ORDER Order, CBLAS_SIDE Side, + CBLAS_UPLO Uplo, CBLAS_TRANSPOSE TransA, + CBLAS_DIAG Diag, int M, int N, + void* alpha, void* A, int lda, + void* B, int ldb ) ; +FUNCTION: void cblas_ztrsm ( CBLAS_ORDER Order, CBLAS_SIDE Side, + CBLAS_UPLO Uplo, CBLAS_TRANSPOSE TransA, + CBLAS_DIAG Diag, int M, int N, + void* alpha, void* A, int lda, + void* B, int ldb ) ; + +FUNCTION: void cblas_chemm ( CBLAS_ORDER Order, CBLAS_SIDE Side, + CBLAS_UPLO Uplo, int M, int N, + void* alpha, void* A, int lda, + void* B, int ldb, void* beta, + void* C, int ldc ) ; +FUNCTION: void cblas_cherk ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE Trans, int N, int K, + float alpha, void* A, int lda, + float beta, void* C, int ldc ) ; +FUNCTION: void cblas_cher2k ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE Trans, int N, int K, + void* alpha, void* A, int lda, + void* B, int ldb, float beta, + void* C, int ldc ) ; +FUNCTION: void cblas_zhemm ( CBLAS_ORDER Order, CBLAS_SIDE Side, + CBLAS_UPLO Uplo, int M, int N, + void* alpha, void* A, int lda, + void* B, int ldb, void* beta, + void* C, int ldc ) ; +FUNCTION: void cblas_zherk ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE Trans, int N, int K, + double alpha, void* A, int lda, + double beta, void* C, int ldc ) ; +FUNCTION: void cblas_zher2k ( CBLAS_ORDER Order, CBLAS_UPLO Uplo, + CBLAS_TRANSPOSE Trans, int N, int K, + void* alpha, void* A, int lda, + void* B, int ldb, double beta, + void* C, int ldc ) ; + diff --git a/basis/math/blas/cblas/summary.txt b/basis/math/blas/cblas/summary.txt new file mode 100644 index 0000000000..c72e78eb0d --- /dev/null +++ b/basis/math/blas/cblas/summary.txt @@ -0,0 +1 @@ +Low-level bindings to the C Basic Linear Algebra Subroutines (BLAS) library diff --git a/basis/math/blas/cblas/tags.txt b/basis/math/blas/cblas/tags.txt new file mode 100644 index 0000000000..5118958180 --- /dev/null +++ b/basis/math/blas/cblas/tags.txt @@ -0,0 +1,3 @@ +math +bindings +unportable diff --git a/basis/math/blas/matrices/authors.txt b/basis/math/blas/matrices/authors.txt new file mode 100644 index 0000000000..f13c9c1e77 --- /dev/null +++ b/basis/math/blas/matrices/authors.txt @@ -0,0 +1 @@ +Joe Groff diff --git a/basis/math/blas/matrices/matrices-docs.factor b/basis/math/blas/matrices/matrices-docs.factor new file mode 100644 index 0000000000..01e0997405 --- /dev/null +++ b/basis/math/blas/matrices/matrices-docs.factor @@ -0,0 +1,245 @@ +USING: alien byte-arrays help.markup help.syntax math math.blas.vectors sequences strings ; +IN: math.blas.matrices + +ARTICLE: "math.blas-summary" "Basic Linear Algebra Subroutines (BLAS) interface" +"Factor provides an interface to high-performance vector and matrix math routines available in the system's BLAS library. A set of specialized types are provided for handling packed, unboxed vector data:" +{ $subsection "math.blas-types" } +"Scalar-vector and vector-vector operations are available in the " { $vocab-link "math.blas.vectors" } " vocabulary:" +{ $subsection "math.blas.vectors" } +"Vector-matrix and matrix-matrix operations are available in the " { $vocab-link "math.blas.matrices" } " vocabulary:" +{ $subsection "math.blas.matrices" } +"The low-level BLAS C interface can be accessed directly through the " { $vocab-link "math.blas.cblas" } " vocabulary." ; + +ARTICLE: "math.blas-types" "BLAS interface types" +"BLAS vectors come in single- and double-precision, real and complex flavors:" +{ $subsection float-blas-vector } +{ $subsection double-blas-vector } +{ $subsection float-complex-blas-vector } +{ $subsection double-complex-blas-vector } +"These vector types all follow the " { $link sequence } " protocol. In addition, there are corresponding types for matrix data:" +{ $subsection float-blas-matrix } +{ $subsection double-blas-matrix } +{ $subsection float-complex-blas-matrix } +{ $subsection double-complex-blas-matrix } +"Syntax words are provided for constructing literal vectors and matrices in the " { $vocab-link "math.blas.syntax" } " vocabulary:" +{ $subsection "math.blas.syntax" } +"There are BOA constructors for all vector and matrix types, which provide the most flexibility in specifying memory layout:" +{ $subsection } +{ $subsection } +{ $subsection } +{ $subsection } +{ $subsection } +{ $subsection } +{ $subsection } +{ $subsection } +"For the simple case of creating a dense, zero-filled vector or matrix, simple empty object constructors are provided:" +{ $subsection } +{ $subsection } +"BLAS vectors and matrices can also be constructed from other Factor sequences:" +{ $subsection >float-blas-vector } +{ $subsection >double-blas-vector } +{ $subsection >float-complex-blas-vector } +{ $subsection >double-complex-blas-vector } +{ $subsection >float-blas-matrix } +{ $subsection >double-blas-matrix } +{ $subsection >float-complex-blas-matrix } +{ $subsection >double-complex-blas-matrix } ; + +ARTICLE: "math.blas.matrices" "BLAS interface matrix operations" +"Transposing and slicing matrices:" +{ $subsection Mtranspose } +{ $subsection Mrows } +{ $subsection Mcols } +{ $subsection Msub } +"Matrix-vector products:" +{ $subsection n*M.V+n*V! } +{ $subsection n*M.V+n*V } +{ $subsection n*M.V } +{ $subsection M.V } +"Vector outer products:" +{ $subsection n*V(*)V+M! } +{ $subsection n*V(*)Vconj+M! } +{ $subsection n*V(*)V+M } +{ $subsection n*V(*)Vconj+M } +{ $subsection n*V(*)V } +{ $subsection n*V(*)Vconj } +{ $subsection V(*) } +{ $subsection V(*)conj } +"Matrix products:" +{ $subsection n*M.M+n*M! } +{ $subsection n*M.M+n*M } +{ $subsection n*M.M } +{ $subsection M. } +"Scalar-matrix products:" +{ $subsection n*M! } +{ $subsection n*M } +{ $subsection M*n } +{ $subsection M/n } ; + +ABOUT: "math.blas.matrices" + +HELP: blas-matrix-base +{ $class-description "The base class for all BLAS matrix types. Objects of this type should not be created directly; instead, instantiate one of the typed subclasses:" +{ $list + { { $link float-blas-matrix } } + { { $link double-blas-matrix } } + { { $link float-complex-blas-matrix } } + { { $link double-complex-blas-matrix } } +} +"All of these subclasses share the same tuple layout:" +{ $list + { { $snippet "underlying" } " contains an alien pointer referencing or byte-array containing a packed, column-major array of float, double, float complex, or double complex values;" } + { { $snippet "ld" } " indicates the distance, in elements, between matrix columns;" } + { { $snippet "rows" } " and " { $snippet "cols" } " indicate the number of significant rows and columns in the matrix;" } + { "and " { $snippet "transpose" } ", if set to a true value, indicates that the matrix should be treated as transposed relative to its in-memory representation." } +} } ; + +{ blas-vector-base blas-matrix-base } related-words + +HELP: float-blas-matrix +{ $class-description "A matrix of single-precision floating-point values. For details on the tuple layout, see " { $link blas-matrix-base } "." } ; +HELP: double-blas-matrix +{ $class-description "A matrix of double-precision floating-point values. For details on the tuple layout, see " { $link blas-matrix-base } "." } ; +HELP: float-complex-blas-matrix +{ $class-description "A matrix of single-precision floating-point complex values. Complex values are stored in memory as two consecutive float values, real part then imaginary part. For details on the tuple layout, see " { $link blas-matrix-base } "." } ; +HELP: double-complex-blas-matrix +{ $class-description "A matrix of double-precision floating-point complex values. Complex values are stored in memory as two consecutive float values, real part then imaginary part. For details on the tuple layout, see " { $link blas-matrix-base } "." } ; + +{ + float-blas-matrix double-blas-matrix float-complex-blas-matrix double-complex-blas-matrix + float-blas-vector double-blas-vector float-complex-blas-vector double-complex-blas-vector +} related-words + +HELP: Mwidth +{ $values { "matrix" blas-matrix-base } { "width" integer } } +{ $description "Returns the number of columns in " { $snippet "matrix" } "." } ; + +HELP: Mheight +{ $values { "matrix" blas-matrix-base } { "height" integer } } +{ $description "Returns the number of rows in " { $snippet "matrix" } "." } ; + +{ Mwidth Mheight } related-words + +HELP: n*M.V+n*V! +{ $values { "alpha" number } { "A" blas-matrix-base } { "x" blas-vector-base } { "beta" number } { "y" blas-vector-base } { "y=alpha*A.x+b*y" blas-vector-base } } +{ $description "Calculate the matrix-vector product " { $snippet "αAx + βy" } ", and overwrite the current contents of " { $snippet "y" } " with the result. The width of " { $snippet "A" } " must match the length of " { $snippet "x" } ", and the height must match the length of " { $snippet "y" } ". Corresponds to the xGEMV routines in BLAS." } +{ $side-effects "y" } ; + +HELP: n*V(*)V+M! +{ $values { "alpha" number } { "x" blas-vector-base } { "y" blas-vector-base } { "A" blas-matrix-base } { "A=alpha*x(*)y+A" blas-matrix-base } } +{ $description "Calculate the outer product " { $snippet "αx⊗y + A" } " and overwrite the current contents of A with the result. The width of " { $snippet "A" } " must match the length of " { $snippet "y" } ", and its height must match the length of " { $snippet "x" } ". Corresponds to the xGER and xGERU routines in BLAS." } +{ $side-effects "A" } ; + +HELP: n*V(*)Vconj+M! +{ $values { "alpha" number } { "x" blas-vector-base } { "y" blas-vector-base } { "A" blas-matrix-base } { "A=alpha*x(*)yconj+A" blas-matrix-base } } +{ $description "Calculate the conjugate outer product " { $snippet "αx⊗y̅ + A" } " and overwrite the current contents of A with the result. The width of " { $snippet "A" } " must match the length of " { $snippet "y" } ", and its height must match the length of " { $snippet "x" } ". Corresponds to the xGERC routines in BLAS." } +{ $side-effects "A" } ; + +HELP: n*M.M+n*M! +{ $values { "alpha" number } { "A" blas-matrix-base } { "B" blas-matrix-base } { "beta" number } { "C" blas-matrix-base } { "C=alpha*A.B+beta*C" blas-matrix-base } } +{ $description "Calculate the matrix product " { $snippet "αAB + βC" } " and overwrite the current contents of C with the result. The width of " { $snippet "A" } " and the height of " { $snippet "B" } " must match, as must the heights of " { $snippet "A" } " and " { $snippet "C" } ", and the widths of " { $snippet "B" } " and " { $snippet "C" } ". Corresponds to the xGEMM routines in BLAS." } +{ $side-effects "C" } ; + +HELP: +{ $values { "rows" integer } { "cols" integer } { "exemplar" blas-vector-base blas-matrix-base } { "matrix" blas-matrix-base } } +{ $description "Create a matrix of all zeros with the given dimensions and the same element type as " { $snippet "exemplar" } "." } ; + +{ } related-words + +HELP: n*M.V+n*V +{ $values { "alpha" number } { "A" blas-matrix-base } { "x" blas-vector-base } { "beta" number } { "y" blas-vector-base } { "alpha*A.x+b*y" blas-vector-base } } +{ $description "Calculate the matrix-vector product " { $snippet "αAx + βy" } " and return a freshly allocated vector containing the result. The width of " { $snippet "A" } " must match the length of " { $snippet "x" } ", and the height must match the length of " { $snippet "y" } ". The returned vector will have the same length as " { $snippet "y" } ". Corresponds to the xGEMV routines in BLAS." } ; + +HELP: n*V(*)V+M +{ $values { "alpha" number } { "x" blas-vector-base } { "y" blas-vector-base } { "A" blas-matrix-base } { "alpha*x(*)y+A" blas-matrix-base } } +{ $description "Calculate the outer product " { $snippet "αx⊗y + A" } " and return a freshly allocated matrix containing the result. The width of " { $snippet "A" } " must match the length of " { $snippet "y" } ", and its height must match the length of " { $snippet "x" } ". The returned matrix will have the same dimensions as " { $snippet "A" } ". Corresponds to the xGER and xGERU routines in BLAS." } ; + +HELP: n*V(*)Vconj+M +{ $values { "alpha" number } { "x" blas-vector-base } { "y" blas-vector-base } { "A" blas-matrix-base } { "alpha*x(*)yconj+A" blas-matrix-base } } +{ $description "Calculate the conjugate outer product " { $snippet "αx⊗y̅ + A" } " and return a freshly allocated matrix containing the result. The width of " { $snippet "A" } " must match the length of " { $snippet "y" } ", and its height must match the length of " { $snippet "x" } ". The returned matrix will have the same dimensions as " { $snippet "A" } ". Corresponds to the xGERC routines in BLAS." } ; + +HELP: n*M.M+n*M +{ $values { "alpha" number } { "A" blas-matrix-base } { "B" blas-matrix-base } { "beta" number } { "C" blas-matrix-base } { "alpha*A.B+beta*C" blas-matrix-base } } +{ $description "Calculate the matrix product " { $snippet "αAB + βC" } " and overwrite the current contents of C with the result. The width of " { $snippet "A" } " and the height of " { $snippet "B" } " must match, as must the heights of " { $snippet "A" } " and " { $snippet "C" } ", and the widths of " { $snippet "B" } " and " { $snippet "C" } ". Corresponds to the xGEMM routines in BLAS." } ; + +HELP: n*M.V +{ $values { "alpha" number } { "A" blas-matrix-base } { "x" blas-vector-base } { "alpha*A.x" blas-vector-base } } +{ $description "Calculate the matrix-vector product " { $snippet "αAx" } " and return a freshly allocated vector containing the result. The width of " { $snippet "A" } " must match the length of " { $snippet "x" } ". The length of the returned vector will match the height of " { $snippet "A" } ". Corresponds to the xGEMV routines in BLAS." } ; + +HELP: M.V +{ $values { "A" blas-matrix-base } { "x" blas-vector-base } { "A.x" blas-vector-base } } +{ $description "Calculate the matrix-vector product " { $snippet "Ax" } " and return a freshly allocated vector containing the result. The width of " { $snippet "A" } " must match the length of " { $snippet "x" } ". The length of the returned vector will match the height of " { $snippet "A" } ". Corresponds to the xGEMV routines in BLAS." } ; + +{ n*M.V+n*V! n*M.V+n*V n*M.V M.V } related-words + +HELP: n*V(*)V +{ $values { "alpha" number } { "x" blas-vector-base } { "y" blas-vector-base } { "alpha*x(*)y" blas-matrix-base } } +{ $description "Calculate the outer product " { $snippet "αx⊗y" } " and return a freshly allocated matrix containing the result. The returned matrix's height will match the length of " { $snippet "x" } ", and its width will match the length of " { $snippet "y" } ". Corresponds to the xGER and xGERU routines in BLAS." } ; + +HELP: n*V(*)Vconj +{ $values { "alpha" number } { "x" blas-vector-base } { "y" blas-vector-base } { "alpha*x(*)yconj" blas-matrix-base } } +{ $description "Calculate the outer product " { $snippet "αx⊗y̅" } " and return a freshly allocated matrix containing the result. The returned matrix's height will match the length of " { $snippet "x" } ", and its width will match the length of " { $snippet "y" } ". Corresponds to the xGERC routines in BLAS." } ; + +HELP: V(*) +{ $values { "x" blas-vector-base } { "y" blas-vector-base } { "x(*)y" blas-matrix-base } } +{ $description "Calculate the outer product " { $snippet "x⊗y" } " and return a freshly allocated matrix containing the result. The returned matrix's height will match the length of " { $snippet "x" } ", and its width will match the length of " { $snippet "y" } ". Corresponds to the xGER and xGERU routines in BLAS." } ; + +HELP: V(*)conj +{ $values { "x" blas-vector-base } { "y" blas-vector-base } { "x(*)yconj" blas-matrix-base } } +{ $description "Calculate the conjugate outer product " { $snippet "x⊗y̅" } " and return a freshly allocated matrix containing the result. The returned matrix's height will match the length of " { $snippet "x" } ", and its width will match the length of " { $snippet "y" } ". Corresponds to the xGERC routines in BLAS." } ; + +{ n*V(*)V+M! n*V(*)Vconj+M! n*V(*)V+M n*V(*)Vconj+M n*V(*)V n*V(*)Vconj V(*) V(*)conj V. V.conj } related-words + +HELP: n*M.M +{ $values { "alpha" number } { "A" blas-matrix-base } { "B" blas-matrix-base } { "alpha*A.B" blas-matrix-base } } +{ $description "Calculate the matrix product " { $snippet "αAB" } " and return a freshly allocated matrix containing the result. The width of " { $snippet "A" } " and the height of " { $snippet "B" } " must match. The returned matrix's height will be the same as " { $snippet "A" } "'s, and its width will match " { $snippet "B" } "'s. Corresponds to the xGEMM routines in BLAS." } ; + +HELP: M. +{ $values { "A" blas-matrix-base } { "B" blas-matrix-base } { "A.B" blas-matrix-base } } +{ $description "Calculate the matrix product " { $snippet "AB" } " and return a freshly allocated matrix containing the result. The width of " { $snippet "A" } " and the height of " { $snippet "B" } " must match. The returned matrix's height will be the same as " { $snippet "A" } "'s, and its width will match " { $snippet "B" } "'s. Corresponds to the xGEMM routines in BLAS." } ; + +{ n*M.M+n*M! n*M.M+n*M n*M.M M. } related-words + +HELP: Msub +{ $values { "matrix" blas-matrix-base } { "row" integer } { "col" integer } { "height" integer } { "width" integer } { "sub" blas-matrix-base } } +{ $description "Select a rectangular submatrix of " { $snippet "matrix" } " with the given dimensions. The returned submatrix will share the parent matrix's storage." } ; + +HELP: Mrows +{ $values { "A" blas-matrix-base } { "rows" sequence } } +{ $description "Return a sequence of BLAS vectors representing the rows of " { $snippet "matrix" } ". Each vector will share the parent matrix's storage." } ; + +HELP: Mcols +{ $values { "A" blas-matrix-base } { "cols" sequence } } +{ $description "Return a sequence of BLAS vectors representing the columns of " { $snippet "matrix" } ". Each vector will share the parent matrix's storage." } ; + +HELP: n*M! +{ $values { "n" number } { "A" blas-matrix-base } { "A=n*A" blas-matrix-base } } +{ $description "Calculate the scalar-matrix product " { $snippet "nA" } " and overwrite the current contents of A with the result." } +{ $side-effects "A" } ; + +HELP: n*M +{ $values { "n" number } { "A" blas-matrix-base } { "n*A" blas-matrix-base } } +{ $description "Calculate the scalar-matrix product " { $snippet "nA" } " and return a freshly allocated matrix with the same dimensions as " { $snippet "A" } " containing the result." } ; + +HELP: M*n +{ $values { "A" blas-matrix-base } { "n" number } { "A*n" blas-matrix-base } } +{ $description "Calculate the scalar-matrix product " { $snippet "nA" } " and return a freshly allocated matrix with the same dimensions as " { $snippet "A" } " containing the result." } ; + +HELP: M/n +{ $values { "A" blas-matrix-base } { "n" number } { "A/n" blas-matrix-base } } +{ $description "Calculate the scalar-matrix product " { $snippet "(1/n)A" } " and return a freshly allocated matrix with the same dimensions as " { $snippet "A" } " containing the result." } ; + +{ n*M! n*M M*n M/n } related-words + +HELP: Mtranspose +{ $values { "matrix" blas-matrix-base } { "matrix^T" blas-matrix-base } } +{ $description "Returns the transpose of " { $snippet "matrix" } ". The returned matrix shares storage with the original matrix." } ; + +HELP: element-type +{ $values { "v" blas-vector-base blas-matrix-base } { "type" string } } +{ $description "Return the C type of the elements in the given BLAS vector or matrix." } ; + +HELP: +{ $values { "length" "The length of the new vector" } { "exemplar" blas-vector-base blas-matrix-base } { "vector" blas-vector-base } } +{ $description "Return a vector of zeros with the given " { $snippet "length" } " and the same element type as " { $snippet "v" } "." } ; + diff --git a/basis/math/blas/matrices/matrices-tests.factor b/basis/math/blas/matrices/matrices-tests.factor new file mode 100644 index 0000000000..dabf3c3ee9 --- /dev/null +++ b/basis/math/blas/matrices/matrices-tests.factor @@ -0,0 +1,710 @@ +USING: kernel math.blas.matrices math.blas.vectors math.blas.syntax +sequences tools.test ; +IN: math.blas.matrices.tests + +! clone + +[ smatrix{ + { 1.0 2.0 3.0 } + { 4.0 5.0 6.0 } + { 7.0 8.0 9.0 } +} ] [ + smatrix{ + { 1.0 2.0 3.0 } + { 4.0 5.0 6.0 } + { 7.0 8.0 9.0 } + } clone +] unit-test +[ f ] [ + smatrix{ + { 1.0 2.0 3.0 } + { 4.0 5.0 6.0 } + { 7.0 8.0 9.0 } + } dup clone eq? +] unit-test + +[ dmatrix{ + { 1.0 2.0 3.0 } + { 4.0 5.0 6.0 } + { 7.0 8.0 9.0 } +} ] [ + dmatrix{ + { 1.0 2.0 3.0 } + { 4.0 5.0 6.0 } + { 7.0 8.0 9.0 } + } clone +] unit-test +[ f ] [ + dmatrix{ + { 1.0 2.0 3.0 } + { 4.0 5.0 6.0 } + { 7.0 8.0 9.0 } + } dup clone eq? +] unit-test + +[ cmatrix{ + { C{ 1.0 1.0 } 2.0 3.0 } + { 4.0 C{ 5.0 2.0 } 6.0 } + { 7.0 8.0 C{ 9.0 3.0 } } +} ] [ + cmatrix{ + { C{ 1.0 1.0 } 2.0 3.0 } + { 4.0 C{ 5.0 2.0 } 6.0 } + { 7.0 8.0 C{ 9.0 3.0 } } + } clone +] unit-test +[ f ] [ + cmatrix{ + { C{ 1.0 1.0 } 2.0 3.0 } + { 4.0 C{ 5.0 2.0 } 6.0 } + { 7.0 8.0 C{ 9.0 3.0 } } + } dup clone eq? +] unit-test + +[ zmatrix{ + { C{ 1.0 1.0 } 2.0 3.0 } + { 4.0 C{ 5.0 2.0 } 6.0 } + { 7.0 8.0 C{ 9.0 3.0 } } +} ] [ + zmatrix{ + { C{ 1.0 1.0 } 2.0 3.0 } + { 4.0 C{ 5.0 2.0 } 6.0 } + { 7.0 8.0 C{ 9.0 3.0 } } + } clone +] unit-test +[ f ] [ + zmatrix{ + { C{ 1.0 1.0 } 2.0 3.0 } + { 4.0 C{ 5.0 2.0 } 6.0 } + { 7.0 8.0 C{ 9.0 3.0 } } + } dup clone eq? +] unit-test + +! M.V + +[ svector{ 3.0 1.0 6.0 } ] [ + smatrix{ + { 0.0 1.0 0.0 1.0 } + { -1.0 0.0 0.0 2.0 } + { 0.0 0.0 1.0 3.0 } + } + svector{ 1.0 2.0 3.0 1.0 } + M.V +] unit-test +[ svector{ -2.0 1.0 3.0 14.0 } ] [ + smatrix{ + { 0.0 1.0 0.0 1.0 } + { -1.0 0.0 0.0 2.0 } + { 0.0 0.0 1.0 3.0 } + } Mtranspose + svector{ 1.0 2.0 3.0 } + M.V +] unit-test + +[ dvector{ 3.0 1.0 6.0 } ] [ + dmatrix{ + { 0.0 1.0 0.0 1.0 } + { -1.0 0.0 0.0 2.0 } + { 0.0 0.0 1.0 3.0 } + } + dvector{ 1.0 2.0 3.0 1.0 } + M.V +] unit-test +[ dvector{ -2.0 1.0 3.0 14.0 } ] [ + dmatrix{ + { 0.0 1.0 0.0 1.0 } + { -1.0 0.0 0.0 2.0 } + { 0.0 0.0 1.0 3.0 } + } Mtranspose + dvector{ 1.0 2.0 3.0 } + M.V +] unit-test + +[ cvector{ 3.0 C{ 1.0 2.0 } 6.0 } ] [ + cmatrix{ + { 0.0 1.0 0.0 1.0 } + { -1.0 C{ 0.0 1.0 } 0.0 2.0 } + { 0.0 0.0 1.0 3.0 } + } + cvector{ 1.0 2.0 3.0 1.0 } + M.V +] unit-test +[ cvector{ -2.0 C{ 1.0 2.0 } 3.0 14.0 } ] [ + cmatrix{ + { 0.0 1.0 0.0 1.0 } + { -1.0 C{ 0.0 1.0 } 0.0 2.0 } + { 0.0 0.0 1.0 3.0 } + } Mtranspose + cvector{ 1.0 2.0 3.0 } + M.V +] unit-test + +[ zvector{ 3.0 C{ 1.0 2.0 } 6.0 } ] [ + zmatrix{ + { 0.0 1.0 0.0 1.0 } + { -1.0 C{ 0.0 1.0 } 0.0 2.0 } + { 0.0 0.0 1.0 3.0 } + } + zvector{ 1.0 2.0 3.0 1.0 } + M.V +] unit-test +[ zvector{ -2.0 C{ 1.0 2.0 } 3.0 14.0 } ] [ + zmatrix{ + { 0.0 1.0 0.0 1.0 } + { -1.0 C{ 0.0 1.0 } 0.0 2.0 } + { 0.0 0.0 1.0 3.0 } + } Mtranspose + zvector{ 1.0 2.0 3.0 } + M.V +] unit-test + +! V(*) + +[ smatrix{ + { 1.0 2.0 3.0 4.0 } + { 2.0 4.0 6.0 8.0 } + { 3.0 6.0 9.0 12.0 } +} ] [ + svector{ 1.0 2.0 3.0 } svector{ 1.0 2.0 3.0 4.0 } V(*) +] unit-test + +[ dmatrix{ + { 1.0 2.0 3.0 4.0 } + { 2.0 4.0 6.0 8.0 } + { 3.0 6.0 9.0 12.0 } +} ] [ + dvector{ 1.0 2.0 3.0 } dvector{ 1.0 2.0 3.0 4.0 } V(*) +] unit-test + +[ cmatrix{ + { 1.0 2.0 C{ 3.0 -3.0 } 4.0 } + { 2.0 4.0 C{ 6.0 -6.0 } 8.0 } + { C{ 3.0 3.0 } C{ 6.0 6.0 } 18.0 C{ 12.0 12.0 } } +} ] [ + cvector{ 1.0 2.0 C{ 3.0 3.0 } } cvector{ 1.0 2.0 C{ 3.0 -3.0 } 4.0 } V(*) +] unit-test + +[ zmatrix{ + { 1.0 2.0 C{ 3.0 -3.0 } 4.0 } + { 2.0 4.0 C{ 6.0 -6.0 } 8.0 } + { C{ 3.0 3.0 } C{ 6.0 6.0 } 18.0 C{ 12.0 12.0 } } +} ] [ + zvector{ 1.0 2.0 C{ 3.0 3.0 } } zvector{ 1.0 2.0 C{ 3.0 -3.0 } 4.0 } V(*) +] unit-test + +! M. + +[ smatrix{ + { 1.0 0.0 0.0 4.0 0.0 } + { 0.0 0.0 -3.0 0.0 0.0 } + { 0.0 4.0 0.0 0.0 10.0 } + { 0.0 0.0 0.0 0.0 0.0 } +} ] [ + smatrix{ + { 1.0 0.0 0.0 } + { 0.0 0.0 -1.0 } + { 0.0 2.0 0.0 } + { 0.0 0.0 0.0 } + } smatrix{ + { 1.0 0.0 0.0 4.0 0.0 } + { 0.0 2.0 0.0 0.0 5.0 } + { 0.0 0.0 3.0 0.0 0.0 } + } M. +] unit-test + +[ smatrix{ + { 1.0 0.0 0.0 0.0 } + { 0.0 0.0 4.0 0.0 } + { 0.0 -3.0 0.0 0.0 } + { 4.0 0.0 0.0 0.0 } + { 0.0 0.0 10.0 0.0 } +} ] [ + smatrix{ + { 1.0 0.0 0.0 4.0 0.0 } + { 0.0 2.0 0.0 0.0 5.0 } + { 0.0 0.0 3.0 0.0 0.0 } + } Mtranspose smatrix{ + { 1.0 0.0 0.0 } + { 0.0 0.0 -1.0 } + { 0.0 2.0 0.0 } + { 0.0 0.0 0.0 } + } Mtranspose M. +] unit-test + +[ dmatrix{ + { 1.0 0.0 0.0 4.0 0.0 } + { 0.0 0.0 -3.0 0.0 0.0 } + { 0.0 4.0 0.0 0.0 10.0 } + { 0.0 0.0 0.0 0.0 0.0 } +} ] [ + dmatrix{ + { 1.0 0.0 0.0 } + { 0.0 0.0 -1.0 } + { 0.0 2.0 0.0 } + { 0.0 0.0 0.0 } + } dmatrix{ + { 1.0 0.0 0.0 4.0 0.0 } + { 0.0 2.0 0.0 0.0 5.0 } + { 0.0 0.0 3.0 0.0 0.0 } + } M. +] unit-test + +[ dmatrix{ + { 1.0 0.0 0.0 0.0 } + { 0.0 0.0 4.0 0.0 } + { 0.0 -3.0 0.0 0.0 } + { 4.0 0.0 0.0 0.0 } + { 0.0 0.0 10.0 0.0 } +} ] [ + dmatrix{ + { 1.0 0.0 0.0 4.0 0.0 } + { 0.0 2.0 0.0 0.0 5.0 } + { 0.0 0.0 3.0 0.0 0.0 } + } Mtranspose dmatrix{ + { 1.0 0.0 0.0 } + { 0.0 0.0 -1.0 } + { 0.0 2.0 0.0 } + { 0.0 0.0 0.0 } + } Mtranspose M. +] unit-test + +[ cmatrix{ + { 1.0 0.0 0.0 4.0 0.0 } + { 0.0 0.0 -3.0 0.0 0.0 } + { 0.0 C{ 4.0 -4.0 } 0.0 0.0 10.0 } + { 0.0 0.0 0.0 0.0 0.0 } +} ] [ + cmatrix{ + { 1.0 0.0 0.0 } + { 0.0 0.0 -1.0 } + { 0.0 2.0 0.0 } + { 0.0 0.0 0.0 } + } cmatrix{ + { 1.0 0.0 0.0 4.0 0.0 } + { 0.0 C{ 2.0 -2.0 } 0.0 0.0 5.0 } + { 0.0 0.0 3.0 0.0 0.0 } + } M. +] unit-test + +[ cmatrix{ + { 1.0 0.0 0.0 0.0 } + { 0.0 0.0 C{ 4.0 -4.0 } 0.0 } + { 0.0 -3.0 0.0 0.0 } + { 4.0 0.0 0.0 0.0 } + { 0.0 0.0 10.0 0.0 } +} ] [ + cmatrix{ + { 1.0 0.0 0.0 4.0 0.0 } + { 0.0 C{ 2.0 -2.0 } 0.0 0.0 5.0 } + { 0.0 0.0 3.0 0.0 0.0 } + } Mtranspose cmatrix{ + { 1.0 0.0 0.0 } + { 0.0 0.0 -1.0 } + { 0.0 2.0 0.0 } + { 0.0 0.0 0.0 } + } Mtranspose M. +] unit-test + +[ zmatrix{ + { 1.0 0.0 0.0 4.0 0.0 } + { 0.0 0.0 -3.0 0.0 0.0 } + { 0.0 C{ 4.0 -4.0 } 0.0 0.0 10.0 } + { 0.0 0.0 0.0 0.0 0.0 } +} ] [ + zmatrix{ + { 1.0 0.0 0.0 } + { 0.0 0.0 -1.0 } + { 0.0 2.0 0.0 } + { 0.0 0.0 0.0 } + } zmatrix{ + { 1.0 0.0 0.0 4.0 0.0 } + { 0.0 C{ 2.0 -2.0 } 0.0 0.0 5.0 } + { 0.0 0.0 3.0 0.0 0.0 } + } M. +] unit-test + +[ zmatrix{ + { 1.0 0.0 0.0 0.0 } + { 0.0 0.0 C{ 4.0 -4.0 } 0.0 } + { 0.0 -3.0 0.0 0.0 } + { 4.0 0.0 0.0 0.0 } + { 0.0 0.0 10.0 0.0 } +} ] [ + zmatrix{ + { 1.0 0.0 0.0 4.0 0.0 } + { 0.0 C{ 2.0 -2.0 } 0.0 0.0 5.0 } + { 0.0 0.0 3.0 0.0 0.0 } + } Mtranspose zmatrix{ + { 1.0 0.0 0.0 } + { 0.0 0.0 -1.0 } + { 0.0 2.0 0.0 } + { 0.0 0.0 0.0 } + } Mtranspose M. +] unit-test + +! n*M + +[ smatrix{ + { 2.0 0.0 } + { 0.0 2.0 } +} ] [ + 2.0 smatrix{ + { 1.0 0.0 } + { 0.0 1.0 } + } n*M +] unit-test + +[ dmatrix{ + { 2.0 0.0 } + { 0.0 2.0 } +} ] [ + 2.0 dmatrix{ + { 1.0 0.0 } + { 0.0 1.0 } + } n*M +] unit-test + +[ cmatrix{ + { C{ 2.0 1.0 } 0.0 } + { 0.0 C{ -1.0 2.0 } } +} ] [ + C{ 2.0 1.0 } cmatrix{ + { 1.0 0.0 } + { 0.0 C{ 0.0 1.0 } } + } n*M +] unit-test + +[ zmatrix{ + { C{ 2.0 1.0 } 0.0 } + { 0.0 C{ -1.0 2.0 } } +} ] [ + C{ 2.0 1.0 } zmatrix{ + { 1.0 0.0 } + { 0.0 C{ 0.0 1.0 } } + } n*M +] unit-test + +! Mrows, Mcols + +[ svector{ 3.0 3.0 3.0 } ] [ + 2 smatrix{ + { 1.0 2.0 3.0 4.0 } + { 2.0 2.0 3.0 4.0 } + { 3.0 2.0 3.0 4.0 } + } Mcols nth +] unit-test +[ svector{ 3.0 2.0 3.0 4.0 } ] [ + 2 smatrix{ + { 1.0 2.0 3.0 4.0 } + { 2.0 2.0 3.0 4.0 } + { 3.0 2.0 3.0 4.0 } + } Mrows nth +] unit-test +[ 3 ] [ + smatrix{ + { 1.0 2.0 3.0 4.0 } + { 2.0 2.0 3.0 4.0 } + { 3.0 2.0 3.0 4.0 } + } Mrows length +] unit-test +[ 4 ] [ + smatrix{ + { 1.0 2.0 3.0 4.0 } + { 2.0 2.0 3.0 4.0 } + { 3.0 2.0 3.0 4.0 } + } Mcols length +] unit-test +[ svector{ 3.0 3.0 3.0 } ] [ + 2 smatrix{ + { 1.0 2.0 3.0 4.0 } + { 2.0 2.0 3.0 4.0 } + { 3.0 2.0 3.0 4.0 } + } Mtranspose Mrows nth +] unit-test +[ svector{ 3.0 2.0 3.0 4.0 } ] [ + 2 smatrix{ + { 1.0 2.0 3.0 4.0 } + { 2.0 2.0 3.0 4.0 } + { 3.0 2.0 3.0 4.0 } + } Mtranspose Mcols nth +] unit-test +[ 3 ] [ + smatrix{ + { 1.0 2.0 3.0 4.0 } + { 2.0 2.0 3.0 4.0 } + { 3.0 2.0 3.0 4.0 } + } Mtranspose Mcols length +] unit-test +[ 4 ] [ + smatrix{ + { 1.0 2.0 3.0 4.0 } + { 2.0 2.0 3.0 4.0 } + { 3.0 2.0 3.0 4.0 } + } Mtranspose Mrows length +] unit-test + +[ dvector{ 3.0 3.0 3.0 } ] [ + 2 dmatrix{ + { 1.0 2.0 3.0 4.0 } + { 2.0 2.0 3.0 4.0 } + { 3.0 2.0 3.0 4.0 } + } Mcols nth +] unit-test +[ dvector{ 3.0 2.0 3.0 4.0 } ] [ + 2 dmatrix{ + { 1.0 2.0 3.0 4.0 } + { 2.0 2.0 3.0 4.0 } + { 3.0 2.0 3.0 4.0 } + } Mrows nth +] unit-test +[ 3 ] [ + dmatrix{ + { 1.0 2.0 3.0 4.0 } + { 2.0 2.0 3.0 4.0 } + { 3.0 2.0 3.0 4.0 } + } Mrows length +] unit-test +[ 4 ] [ + dmatrix{ + { 1.0 2.0 3.0 4.0 } + { 2.0 2.0 3.0 4.0 } + { 3.0 2.0 3.0 4.0 } + } Mcols length +] unit-test +[ dvector{ 3.0 3.0 3.0 } ] [ + 2 dmatrix{ + { 1.0 2.0 3.0 4.0 } + { 2.0 2.0 3.0 4.0 } + { 3.0 2.0 3.0 4.0 } + } Mtranspose Mrows nth +] unit-test +[ dvector{ 3.0 2.0 3.0 4.0 } ] [ + 2 dmatrix{ + { 1.0 2.0 3.0 4.0 } + { 2.0 2.0 3.0 4.0 } + { 3.0 2.0 3.0 4.0 } + } Mtranspose Mcols nth +] unit-test +[ 3 ] [ + dmatrix{ + { 1.0 2.0 3.0 4.0 } + { 2.0 2.0 3.0 4.0 } + { 3.0 2.0 3.0 4.0 } + } Mtranspose Mcols length +] unit-test +[ 4 ] [ + dmatrix{ + { 1.0 2.0 3.0 4.0 } + { 2.0 2.0 3.0 4.0 } + { 3.0 2.0 3.0 4.0 } + } Mtranspose Mrows length +] unit-test + +[ cvector{ C{ 3.0 1.0 } C{ 3.0 2.0 } C{ 3.0 3.0 } } ] [ + 2 cmatrix{ + { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } + { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } + { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } + } Mcols nth +] unit-test +[ cvector{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } ] [ + 2 cmatrix{ + { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } + { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } + { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } + } Mrows nth +] unit-test +[ 3 ] [ + cmatrix{ + { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } + { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } + { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } + } Mrows length +] unit-test +[ 4 ] [ + cmatrix{ + { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } + { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } + { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } + } Mcols length +] unit-test +[ cvector{ C{ 3.0 1.0 } C{ 3.0 2.0 } C{ 3.0 3.0 } } ] [ + 2 cmatrix{ + { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } + { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } + { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } + } Mtranspose Mrows nth +] unit-test +[ cvector{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } ] [ + 2 cmatrix{ + { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } + { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } + { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } + } Mtranspose Mcols nth +] unit-test +[ 3 ] [ + cmatrix{ + { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } + { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } + { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } + } Mtranspose Mcols length +] unit-test +[ 4 ] [ + cmatrix{ + { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } + { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } + { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } + } Mtranspose Mrows length +] unit-test + +[ zvector{ C{ 3.0 1.0 } C{ 3.0 2.0 } C{ 3.0 3.0 } } ] [ + 2 zmatrix{ + { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } + { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } + { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } + } Mcols nth +] unit-test +[ zvector{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } ] [ + 2 zmatrix{ + { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } + { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } + { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } + } Mrows nth +] unit-test +[ 3 ] [ + zmatrix{ + { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } + { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } + { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } + } Mrows length +] unit-test +[ 4 ] [ + zmatrix{ + { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } + { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } + { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } + } Mcols length +] unit-test +[ zvector{ C{ 3.0 1.0 } C{ 3.0 2.0 } C{ 3.0 3.0 } } ] [ + 2 zmatrix{ + { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } + { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } + { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } + } Mtranspose Mrows nth +] unit-test +[ zvector{ C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } ] [ + 2 zmatrix{ + { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } + { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } + { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } + } Mtranspose Mcols nth +] unit-test +[ 3 ] [ + zmatrix{ + { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } + { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } + { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } + } Mtranspose Mcols length +] unit-test +[ 4 ] [ + zmatrix{ + { C{ 1.0 1.0 } C{ 2.0 1.0 } C{ 3.0 1.0 } C{ 4.0 1.0 } } + { C{ 1.0 2.0 } C{ 2.0 2.0 } C{ 3.0 2.0 } C{ 4.0 2.0 } } + { C{ 1.0 3.0 } C{ 2.0 3.0 } C{ 3.0 3.0 } C{ 4.0 3.0 } } + } Mtranspose Mrows length +] unit-test + +! Msub + +[ smatrix{ + { 3.0 2.0 1.0 } + { 0.0 1.0 0.0 } +} ] [ + smatrix{ + { 0.0 1.0 2.0 3.0 2.0 } + { 1.0 0.0 3.0 2.0 1.0 } + { 2.0 3.0 0.0 1.0 0.0 } + } 1 2 2 3 Msub +] unit-test + +[ smatrix{ + { 3.0 0.0 } + { 2.0 1.0 } + { 1.0 0.0 } +} ] [ + smatrix{ + { 0.0 1.0 2.0 3.0 2.0 } + { 1.0 0.0 3.0 2.0 1.0 } + { 2.0 3.0 0.0 1.0 0.0 } + } Mtranspose 2 1 3 2 Msub +] unit-test + +[ dmatrix{ + { 3.0 2.0 1.0 } + { 0.0 1.0 0.0 } +} ] [ + dmatrix{ + { 0.0 1.0 2.0 3.0 2.0 } + { 1.0 0.0 3.0 2.0 1.0 } + { 2.0 3.0 0.0 1.0 0.0 } + } 1 2 2 3 Msub +] unit-test + +[ dmatrix{ + { 3.0 0.0 } + { 2.0 1.0 } + { 1.0 0.0 } +} ] [ + dmatrix{ + { 0.0 1.0 2.0 3.0 2.0 } + { 1.0 0.0 3.0 2.0 1.0 } + { 2.0 3.0 0.0 1.0 0.0 } + } Mtranspose 2 1 3 2 Msub +] unit-test + +[ cmatrix{ + { C{ 3.0 3.0 } 2.0 1.0 } + { 0.0 1.0 0.0 } +} ] [ + cmatrix{ + { 0.0 1.0 2.0 3.0 2.0 } + { 1.0 0.0 C{ 3.0 3.0 } 2.0 1.0 } + { 2.0 3.0 0.0 1.0 0.0 } + } 1 2 2 3 Msub +] unit-test + +[ cmatrix{ + { C{ 3.0 3.0 } 0.0 } + { 2.0 1.0 } + { 1.0 0.0 } +} ] [ + cmatrix{ + { 0.0 1.0 2.0 3.0 2.0 } + { 1.0 0.0 C{ 3.0 3.0 } 2.0 1.0 } + { 2.0 3.0 0.0 1.0 0.0 } + } Mtranspose 2 1 3 2 Msub +] unit-test + +[ zmatrix{ + { C{ 3.0 3.0 } 2.0 1.0 } + { 0.0 1.0 0.0 } +} ] [ + zmatrix{ + { 0.0 1.0 2.0 3.0 2.0 } + { 1.0 0.0 C{ 3.0 3.0 } 2.0 1.0 } + { 2.0 3.0 0.0 1.0 0.0 } + } 1 2 2 3 Msub +] unit-test + +[ zmatrix{ + { C{ 3.0 3.0 } 0.0 } + { 2.0 1.0 } + { 1.0 0.0 } +} ] [ + zmatrix{ + { 0.0 1.0 2.0 3.0 2.0 } + { 1.0 0.0 C{ 3.0 3.0 } 2.0 1.0 } + { 2.0 3.0 0.0 1.0 0.0 } + } Mtranspose 2 1 3 2 Msub +] unit-test + diff --git a/basis/math/blas/matrices/matrices.factor b/basis/math/blas/matrices/matrices.factor new file mode 100755 index 0000000000..75ab07709a --- /dev/null +++ b/basis/math/blas/matrices/matrices.factor @@ -0,0 +1,307 @@ +USING: accessors alien alien.c-types arrays byte-arrays combinators +combinators.short-circuit fry kernel locals macros +math math.blas.cblas math.blas.vectors math.blas.vectors.private +math.complex math.functions math.order functors words +sequences sequences.merged sequences.private shuffle +specialized-arrays.direct.float specialized-arrays.direct.double +specialized-arrays.float specialized-arrays.double ; +IN: math.blas.matrices + +TUPLE: blas-matrix-base underlying ld rows cols transpose ; + +: Mtransposed? ( matrix -- ? ) + transpose>> ; inline +: Mwidth ( matrix -- width ) + dup Mtransposed? [ rows>> ] [ cols>> ] if ; inline +: Mheight ( matrix -- height ) + dup Mtransposed? [ cols>> ] [ rows>> ] if ; inline + +GENERIC: n*M.V+n*V! ( alpha A x beta y -- y=alpha*A.x+b*y ) +GENERIC: n*V(*)V+M! ( alpha x y A -- A=alpha*x(*)y+A ) +GENERIC: n*V(*)Vconj+M! ( alpha x y A -- A=alpha*x(*)yconj+A ) +GENERIC: n*M.M+n*M! ( alpha A B beta C -- C=alpha*A.B+beta*C ) + +> [ CblasTrans ] [ CblasNoTrans ] if ; + +GENERIC: (blas-matrix-like) ( data ld rows cols transpose exemplar -- matrix ) + +: (validate-gemv) ( A x y -- ) + { + [ drop [ Mwidth ] [ length>> ] bi* = ] + [ nip [ Mheight ] [ length>> ] bi* = ] + } 3&& + [ "Mismatched matrix and vectors in matrix-vector multiplication" throw ] + unless ; + +:: (prepare-gemv) + ( alpha A x beta y >c-arg -- order A-trans m n alpha A-data A-ld x-data x-inc beta y-data y-inc + y ) + A x y (validate-gemv) + CblasColMajor + A (blas-transpose) + A rows>> + A cols>> + alpha >c-arg call + A underlying>> + A ld>> + x underlying>> + x inc>> + beta >c-arg call + y underlying>> + y inc>> + y ; inline + +: (validate-ger) ( x y A -- ) + { + [ nip [ length>> ] [ Mheight ] bi* = ] + [ nipd [ length>> ] [ Mwidth ] bi* = ] + } 3&& + [ "Mismatched vertices and matrix in vector outer product" throw ] + unless ; + +:: (prepare-ger) + ( alpha x y A >c-arg -- order m n alpha x-data x-inc y-data y-inc A-data A-ld + A ) + x y A (validate-ger) + CblasColMajor + A rows>> + A cols>> + alpha >c-arg call + x underlying>> + x inc>> + y underlying>> + y inc>> + A underlying>> + A ld>> + A f >>transpose ; inline + +: (validate-gemm) ( A B C -- ) + { + [ drop [ Mwidth ] [ Mheight ] bi* = ] + [ nip [ Mheight ] bi@ = ] + [ nipd [ Mwidth ] bi@ = ] + } 3&& + [ "Mismatched matrices in matrix multiplication" throw ] + unless ; + +:: (prepare-gemm) + ( alpha A B beta C >c-arg -- order A-trans B-trans m n k alpha A-data A-ld B-data B-ld beta C-data C-ld + C ) + A B C (validate-gemm) + CblasColMajor + A (blas-transpose) + B (blas-transpose) + C rows>> + C cols>> + A Mwidth + alpha >c-arg call + A underlying>> + A ld>> + B underlying>> + B ld>> + beta >c-arg call + C underlying>> + C ld>> + C f >>transpose ; inline + +: (>matrix) ( arrays >c-array -- c-array ld rows cols transpose ) + '[ @ ] [ length dup ] [ first length ] tri f ; inline + +PRIVATE> + +! XXX should do a dense clone +M: blas-matrix-base clone + [ + [ { + [ underlying>> ] + [ ld>> ] + [ cols>> ] + [ element-type heap-size ] + } cleave * * memory>byte-array ] + [ { + [ ld>> ] + [ rows>> ] + [ cols>> ] + [ transpose>> ] + } cleave ] + bi + ] keep (blas-matrix-like) ; + +! XXX try rounding stride to next 128 bit bound for better vectorizin' +: ( rows cols exemplar -- matrix ) + [ element-type [ * ] dip ] + [ 2drop ] + [ f swap (blas-matrix-like) ] 3tri ; + +: n*M.V+n*V ( alpha A x beta y -- alpha*A.x+b*y ) + clone n*M.V+n*V! ; +: n*V(*)V+M ( alpha x y A -- alpha*x(*)y+A ) + clone n*V(*)V+M! ; +: n*V(*)Vconj+M ( alpha x y A -- alpha*x(*)yconj+A ) + clone n*V(*)Vconj+M! ; +: n*M.M+n*M ( alpha A B beta C -- alpha*A.B+beta*C ) + clone n*M.M+n*M! ; + +: n*M.V ( alpha A x -- alpha*A.x ) + 1.0 2over [ Mheight ] dip + n*M.V+n*V! ; inline + +: M.V ( A x -- A.x ) + 1.0 -rot n*M.V ; inline + +: n*V(*)V ( alpha x y -- alpha*x(*)y ) + 2dup [ length>> ] bi@ pick + n*V(*)V+M! ; +: n*V(*)Vconj ( alpha x y -- alpha*x(*)yconj ) + 2dup [ length>> ] bi@ pick + n*V(*)Vconj+M! ; + +: V(*) ( x y -- x(*)y ) + 1.0 -rot n*V(*)V ; inline +: V(*)conj ( x y -- x(*)yconj ) + 1.0 -rot n*V(*)Vconj ; inline + +: n*M.M ( alpha A B -- alpha*A.B ) + 2dup [ Mheight ] [ Mwidth ] bi* pick + 1.0 swap n*M.M+n*M! ; + +: M. ( A B -- A.B ) + 1.0 -rot n*M.M ; inline + +:: (Msub) ( matrix row col height width -- data ld rows cols ) + matrix ld>> col * row + matrix element-type heap-size * + matrix underlying>> + matrix ld>> + height + width ; + +:: Msub ( matrix row col height width -- sub ) + matrix dup transpose>> + [ col row width height ] + [ row col height width ] if (Msub) + matrix transpose>> matrix (blas-matrix-like) ; + +TUPLE: blas-matrix-rowcol-sequence + parent inc rowcol-length rowcol-jump length ; +C: blas-matrix-rowcol-sequence + +INSTANCE: blas-matrix-rowcol-sequence sequence + +M: blas-matrix-rowcol-sequence length + length>> ; +M: blas-matrix-rowcol-sequence nth-unsafe + { + [ + [ rowcol-jump>> ] + [ parent>> element-type heap-size ] + [ parent>> underlying>> ] tri + [ * * ] dip + ] + [ rowcol-length>> ] + [ inc>> ] + [ parent>> ] + } cleave (blas-vector-like) ; + +: (Mcols) ( A -- columns ) + { [ ] [ drop 1 ] [ rows>> ] [ ld>> ] [ cols>> ] } + cleave ; +: (Mrows) ( A -- rows ) + { [ ] [ ld>> ] [ cols>> ] [ drop 1 ] [ rows>> ] } + cleave ; + +: Mrows ( A -- rows ) + dup transpose>> [ (Mcols) ] [ (Mrows) ] if ; +: Mcols ( A -- cols ) + dup transpose>> [ (Mrows) ] [ (Mcols) ] if ; + +: n*M! ( n A -- A=n*A ) + [ (Mcols) [ n*V! drop ] with each ] keep ; + +: n*M ( n A -- n*A ) + clone n*M! ; inline + +: M*n ( A n -- A*n ) + swap n*M ; inline +: M/n ( A n -- A/n ) + recip swap n*M ; inline + +: Mtranspose ( matrix -- matrix^T ) + [ { + [ underlying>> ] + [ ld>> ] [ rows>> ] + [ cols>> ] + [ transpose>> not ] + } cleave ] keep (blas-matrix-like) ; + +M: blas-matrix-base equal? + { + [ [ Mwidth ] bi@ = ] + [ [ Mcols ] bi@ [ = ] 2all? ] + } 2&& ; + +<< + +FUNCTOR: (define-blas-matrix) ( TYPE T U C -- ) + +VECTOR IS ${TYPE}-blas-vector + IS <${TYPE}-blas-vector> +>ARRAY IS >${TYPE}-array +TYPE>ARG IS ${TYPE}>arg +XGEMV IS cblas_${T}gemv +XGEMM IS cblas_${T}gemm +XGERU IS cblas_${T}ger${U} +XGERC IS cblas_${T}ger${C} + +MATRIX DEFINES ${TYPE}-blas-matrix + DEFINES <${TYPE}-blas-matrix> +>MATRIX DEFINES >${TYPE}-blas-matrix + +WHERE + +TUPLE: MATRIX < blas-matrix-base ; +: ( underlying ld rows cols transpose -- matrix ) + MATRIX boa ; inline + +M: MATRIX element-type + drop TYPE ; +M: MATRIX (blas-matrix-like) + drop execute ; +M: VECTOR (blas-matrix-like) + drop execute ; +M: MATRIX (blas-vector-like) + drop execute ; + +: >MATRIX ( arrays -- matrix ) + [ >ARRAY execute underlying>> ] (>matrix) + execute ; + +M: VECTOR n*M.V+n*V! + [ TYPE>ARG execute ] (prepare-gemv) + [ XGEMV execute ] dip ; +M: MATRIX n*M.M+n*M! + [ TYPE>ARG execute ] (prepare-gemm) + [ XGEMM execute ] dip ; +M: MATRIX n*V(*)V+M! + [ TYPE>ARG execute ] (prepare-ger) + [ XGERU execute ] dip ; +M: MATRIX n*V(*)Vconj+M! + [ TYPE>ARG execute ] (prepare-ger) + [ XGERC execute ] dip ; + +;FUNCTOR + + +: define-real-blas-matrix ( TYPE T -- ) + "" "" (define-blas-matrix) ; +: define-complex-blas-matrix ( TYPE T -- ) + "u" "c" (define-blas-matrix) ; + +"float" "s" define-real-blas-matrix +"double" "d" define-real-blas-matrix +"float-complex" "c" define-complex-blas-matrix +"double-complex" "z" define-complex-blas-matrix + +>> diff --git a/basis/math/blas/matrices/summary.txt b/basis/math/blas/matrices/summary.txt new file mode 100644 index 0000000000..4cc5684789 --- /dev/null +++ b/basis/math/blas/matrices/summary.txt @@ -0,0 +1 @@ +BLAS level 2 and 3 matrix-vector and matrix-matrix operations diff --git a/basis/math/blas/matrices/tags.txt b/basis/math/blas/matrices/tags.txt new file mode 100644 index 0000000000..5118958180 --- /dev/null +++ b/basis/math/blas/matrices/tags.txt @@ -0,0 +1,3 @@ +math +bindings +unportable diff --git a/basis/math/blas/syntax/authors.txt b/basis/math/blas/syntax/authors.txt new file mode 100644 index 0000000000..f13c9c1e77 --- /dev/null +++ b/basis/math/blas/syntax/authors.txt @@ -0,0 +1 @@ +Joe Groff diff --git a/basis/math/blas/syntax/summary.txt b/basis/math/blas/syntax/summary.txt new file mode 100644 index 0000000000..a71bebb50f --- /dev/null +++ b/basis/math/blas/syntax/summary.txt @@ -0,0 +1 @@ +Literal syntax for BLAS vectors and matrices diff --git a/basis/math/blas/syntax/syntax-docs.factor b/basis/math/blas/syntax/syntax-docs.factor new file mode 100644 index 0000000000..6b58df738a --- /dev/null +++ b/basis/math/blas/syntax/syntax-docs.factor @@ -0,0 +1,78 @@ +USING: help.markup help.syntax math.blas.matrices math.blas.vectors multiline ; +IN: math.blas.syntax + +ARTICLE: "math.blas.syntax" "BLAS interface literal syntax" +"Vectors:" +{ $subsection POSTPONE: svector{ } +{ $subsection POSTPONE: dvector{ } +{ $subsection POSTPONE: cvector{ } +{ $subsection POSTPONE: zvector{ } +"Matrices:" +{ $subsection POSTPONE: smatrix{ } +{ $subsection POSTPONE: dmatrix{ } +{ $subsection POSTPONE: cmatrix{ } +{ $subsection POSTPONE: zmatrix{ } ; + +ABOUT: "math.blas.syntax" + +HELP: svector{ +{ $syntax "svector{ 1.0 -2.0 3.0 }" } +{ $description "Construct a literal " { $link float-blas-vector } "." } ; + +HELP: dvector{ +{ $syntax "dvector{ 1.0 -2.0 3.0 }" } +{ $description "Construct a literal " { $link double-blas-vector } "." } ; + +HELP: cvector{ +{ $syntax "cvector{ 1.0 -2.0 C{ 3.0 -1.0 } }" } +{ $description "Construct a literal " { $link float-complex-blas-vector } "." } ; + +HELP: zvector{ +{ $syntax "dvector{ 1.0 -2.0 C{ 3.0 -1.0 } }" } +{ $description "Construct a literal " { $link double-complex-blas-vector } "." } ; + +{ + POSTPONE: svector{ POSTPONE: dvector{ + POSTPONE: cvector{ POSTPONE: zvector{ +} related-words + +HELP: smatrix{ +{ $syntax <" smatrix{ + { 1.0 0.0 0.0 1.0 } + { 0.0 1.0 0.0 2.0 } + { 0.0 0.0 1.0 3.0 } + { 0.0 0.0 0.0 1.0 } +} "> } +{ $description "Construct a literal " { $link float-blas-matrix } ". Note that although BLAS matrices are stored in column-major order, the literal is specified in row-major order." } ; + +HELP: dmatrix{ +{ $syntax <" dmatrix{ + { 1.0 0.0 0.0 1.0 } + { 0.0 1.0 0.0 2.0 } + { 0.0 0.0 1.0 3.0 } + { 0.0 0.0 0.0 1.0 } +} "> } +{ $description "Construct a literal " { $link double-blas-matrix } ". Note that although BLAS matrices are stored in column-major order, the literal is specified in row-major order." } ; + +HELP: cmatrix{ +{ $syntax <" cmatrix{ + { 1.0 0.0 0.0 1.0 } + { 0.0 C{ 0.0 1.0 } 0.0 2.0 } + { 0.0 0.0 -1.0 3.0 } + { 0.0 0.0 0.0 C{ 0.0 -1.0 } } +} "> } +{ $description "Construct a literal " { $link float-complex-blas-matrix } ". Note that although BLAS matrices are stored in column-major order, the literal is specified in row-major order." } ; + +HELP: zmatrix{ +{ $syntax <" zmatrix{ + { 1.0 0.0 0.0 1.0 } + { 0.0 C{ 0.0 1.0 } 0.0 2.0 } + { 0.0 0.0 -1.0 3.0 } + { 0.0 0.0 0.0 C{ 0.0 -1.0 } } +} "> } +{ $description "Construct a literal " { $link double-complex-blas-matrix } ". Note that although BLAS matrices are stored in column-major order, the literal is specified in row-major order." } ; + +{ + POSTPONE: smatrix{ POSTPONE: dmatrix{ + POSTPONE: cmatrix{ POSTPONE: zmatrix{ +} related-words diff --git a/basis/math/blas/syntax/syntax.factor b/basis/math/blas/syntax/syntax.factor new file mode 100644 index 0000000000..95f9f7bd08 --- /dev/null +++ b/basis/math/blas/syntax/syntax.factor @@ -0,0 +1,44 @@ +USING: kernel math.blas.vectors math.blas.matrices parser +arrays prettyprint.backend sequences ; +IN: math.blas.syntax + +: svector{ + \ } [ >float-blas-vector ] parse-literal ; parsing +: dvector{ + \ } [ >double-blas-vector ] parse-literal ; parsing +: cvector{ + \ } [ >float-complex-blas-vector ] parse-literal ; parsing +: zvector{ + \ } [ >double-complex-blas-vector ] parse-literal ; parsing + +: smatrix{ + \ } [ >float-blas-matrix ] parse-literal ; parsing +: dmatrix{ + \ } [ >double-blas-matrix ] parse-literal ; parsing +: cmatrix{ + \ } [ >float-complex-blas-matrix ] parse-literal ; parsing +: zmatrix{ + \ } [ >double-complex-blas-matrix ] parse-literal ; parsing + +M: float-blas-vector pprint-delims + drop \ svector{ \ } ; +M: double-blas-vector pprint-delims + drop \ dvector{ \ } ; +M: float-complex-blas-vector pprint-delims + drop \ cvector{ \ } ; +M: double-complex-blas-vector pprint-delims + drop \ zvector{ \ } ; + +M: float-blas-matrix pprint-delims + drop \ smatrix{ \ } ; +M: double-blas-matrix pprint-delims + drop \ dmatrix{ \ } ; +M: float-complex-blas-matrix pprint-delims + drop \ cmatrix{ \ } ; +M: double-complex-blas-matrix pprint-delims + drop \ zmatrix{ \ } ; + +M: blas-vector-base >pprint-sequence ; +M: blas-vector-base pprint* pprint-object ; +M: blas-matrix-base >pprint-sequence Mrows ; +M: blas-matrix-base pprint* pprint-object ; diff --git a/basis/math/blas/syntax/tags.txt b/basis/math/blas/syntax/tags.txt new file mode 100644 index 0000000000..6a932d96d2 --- /dev/null +++ b/basis/math/blas/syntax/tags.txt @@ -0,0 +1,2 @@ +math +unportable diff --git a/basis/math/blas/vectors/authors.txt b/basis/math/blas/vectors/authors.txt new file mode 100644 index 0000000000..f13c9c1e77 --- /dev/null +++ b/basis/math/blas/vectors/authors.txt @@ -0,0 +1 @@ +Joe Groff diff --git a/basis/math/blas/vectors/summary.txt b/basis/math/blas/vectors/summary.txt new file mode 100644 index 0000000000..f983e855a4 --- /dev/null +++ b/basis/math/blas/vectors/summary.txt @@ -0,0 +1 @@ +BLAS level 1 vector operations diff --git a/basis/math/blas/vectors/tags.txt b/basis/math/blas/vectors/tags.txt new file mode 100644 index 0000000000..6a932d96d2 --- /dev/null +++ b/basis/math/blas/vectors/tags.txt @@ -0,0 +1,2 @@ +math +unportable diff --git a/basis/math/blas/vectors/vectors-docs.factor b/basis/math/blas/vectors/vectors-docs.factor new file mode 100644 index 0000000000..cb26d67334 --- /dev/null +++ b/basis/math/blas/vectors/vectors-docs.factor @@ -0,0 +1,131 @@ +USING: alien byte-arrays help.markup help.syntax math sequences ; +IN: math.blas.vectors + +ARTICLE: "math.blas.vectors" "BLAS interface vector operations" +"Slicing vectors:" +{ $subsection Vsub } +"Taking the norm (magnitude) of a vector:" +{ $subsection Vnorm } +"Summing and taking the maximum of elements:" +{ $subsection Vasum } +{ $subsection Viamax } +{ $subsection Vamax } +"Scalar-vector products:" +{ $subsection n*V! } +{ $subsection n*V } +{ $subsection V*n } +{ $subsection V/n } +{ $subsection Vneg } +"Vector addition:" +{ $subsection n*V+V! } +{ $subsection n*V+V } +{ $subsection V+ } +{ $subsection V- } +"Vector inner products:" +{ $subsection V. } +{ $subsection V.conj } ; + +ABOUT: "math.blas.vectors" + +HELP: blas-vector-base +{ $class-description "The base class for all BLAS vector types. Objects of this type should not be created directly; instead, instantiate one of the typed subclasses:" +{ $list + { { $link float-blas-vector } } + { { $link double-blas-vector } } + { { $link float-complex-blas-vector } } + { { $link double-complex-blas-vector } } +} +"All of these subclasses share the same tuple layout:" +{ $list + { { $snippet "underlying" } " contains an alien pointer referencing or byte-array containing a packed array of float, double, float complex, or double complex values;" } + { { $snippet "length" } " indicates the length of the vector;" } + { "and " { $snippet "inc" } " indicates the distance, in elements, between elements." } +} } ; + +HELP: float-blas-vector +{ $class-description "A vector of single-precision floating-point values. For details on the tuple layout, see " { $link blas-vector-base } "." } ; +HELP: double-blas-vector +{ $class-description "A vector of double-precision floating-point values. For details on the tuple layout, see " { $link blas-vector-base } "." } ; +HELP: float-complex-blas-vector +{ $class-description "A vector of single-precision floating-point complex values. Complex values are stored in memory as two consecutive float values, real part then imaginary part. For details on the tuple layout, see " { $link blas-vector-base } "." } ; +HELP: double-complex-blas-vector +{ $class-description "A vector of single-precision floating-point complex values. Complex values are stored in memory as two consecutive float values, real part then imaginary part. For details on the tuple layout, see " { $link blas-vector-base } "." } ; + +HELP: n*V+V! +{ $values { "alpha" number } { "x" blas-vector-base } { "y" blas-vector-base } { "y=alpha*x+y" blas-vector-base } } +{ $description "Calculate the vector sum " { $snippet "αx + y" } " and replace the existing contents of y with the result. Corresponds to the xAXPY routines in BLAS." } +{ $side-effects "y" } ; + +HELP: n*V! +{ $values { "alpha" number } { "x" blas-vector-base } { "x=alpha*x" blas-vector-base } } +{ $description "Calculate the scalar-vector product " { $snippet "αx" } " and replace the existing contents of x with the result. Corresponds to the xSCAL routines in BLAS." } +{ $side-effects "x" } ; + +HELP: V. +{ $values { "x" blas-vector-base } { "y" blas-vector-base } { "x.y" number } } +{ $description "Calculate the inner product " { $snippet "x⋅y" } ". Corresponds to the xDOT and xDOTU routines in BLAS." } ; + +HELP: V.conj +{ $values { "x" blas-vector-base } { "y" blas-vector-base } { "xconj.y" number } } +{ $description "Calculate the conjugate inner product " { $snippet "x̅⋅y" } ". Corresponds to the xDOTC routines in BLAS." } ; + +HELP: Vnorm +{ $values { "x" blas-vector-base } { "norm" number } } +{ $description "Calculate the norm-2, i.e., the magnitude or absolute value, of " { $snippet "x" } " (" { $snippet "‖x‖₂" } "). Corresponds to the xNRM2 routines in BLAS." } ; + +HELP: Vasum +{ $values { "x" blas-vector-base } { "sum" number } } +{ $description "Calculate the sum of the norm-1s of the elements of " { $snippet "x" } " (" { $snippet "Σ ‖xᵢ‖₁" } "). Corresponds to the xASUM routines in BLAS." } ; + +HELP: Vswap +{ $values { "x" blas-vector-base } { "y" blas-vector-base } { "x=y" blas-vector-base } { "y=x" blas-vector-base } } +{ $description "Swap the contents of " { $snippet "x" } " and " { $snippet "y" } " in place. Corresponds to the xSWAP routines in BLAS." } +{ $side-effects "x" "y" } ; + +HELP: Viamax +{ $values { "x" blas-vector-base } { "max-i" integer } } +{ $description "Return the index of the element in " { $snippet "x" } " with the largest norm-1. If more than one element has the same norm-1, returns the smallest index. Corresponds to the IxAMAX routines in BLAS." } ; + +HELP: Vamax +{ $values { "x" blas-vector-base } { "max" number } } +{ $description "Return the value of the element in " { $snippet "x" } " with the largest norm-1. If more than one element has the same norm-1, returns the first element. Corresponds to the IxAMAX routines in BLAS." } ; + +{ Viamax Vamax } related-words + +HELP: +{ $values { "exemplar" blas-vector-base } { "zero" blas-vector-base } } +{ $description "Return a vector of zeros with the same length and element type as " { $snippet "v" } ". The vector is constructed with an " { $snippet "inc" } " of zero, so it is not suitable for receiving results from BLAS functions; it is intended to be used as a term in other vector calculations. To construct an empty vector that can be used to receive results, see " { $link } "." } ; + +HELP: n*V+V +{ $values { "alpha" number } { "x" blas-vector-base } { "y" blas-vector-base } { "alpha*x+y" blas-vector-base } } +{ $description "Calculate the vector sum " { $snippet "αx + y" } " and return a freshly-allocated vector with the same length as " { $snippet "x" } " and " { $snippet "y" } " containing the result. Corresponds to the xAXPY routines in BLAS." } ; + +HELP: n*V +{ $values { "alpha" "a number" } { "x" blas-vector-base } { "alpha*x" blas-vector-base } } +{ $description "Calculate the scalar-vector product " { $snippet "αx" } " and return a freshly-allocated vector with the same length as " { $snippet "x" } " containing the result. Corresponds to the xSCAL routines in BLAS." } ; + +HELP: V+ +{ $values { "x" blas-vector-base } { "y" blas-vector-base } { "x+y" blas-vector-base } } +{ $description "Calculate the vector sum " { $snippet "x + y" } " and return a freshly-allocated vector with the same length as " { $snippet "x" } " and " { $snippet "y" } " containing the result. Corresponds to the xAXPY routines in BLAS." } ; + +HELP: V- +{ $values { "x" blas-vector-base } { "y" blas-vector-base } { "x-y" blas-vector-base } } +{ $description "Calculate the vector difference " { $snippet "x – y" } " and return a freshly-allocated vector with the same length as " { $snippet "x" } " and " { $snippet "y" } " containing the result. Corresponds to the xAXPY routines in BLAS." } ; + +HELP: Vneg +{ $values { "x" blas-vector-base } { "-x" blas-vector-base } } +{ $description "Negate the elements of " { $snippet "x" } " and return a freshly-allocated vector with the same length as " { $snippet "x" } " containing the result." } ; + +HELP: V*n +{ $values { "x" blas-vector-base } { "alpha" number } { "x*alpha" blas-vector-base } } +{ $description "Calculate the scalar-vector product " { $snippet "αx" } " and return a freshly-allocated vector with the same length as " { $snippet "x" } " containing the result. Corresponds to the xSCAL routines in BLAS." } ; + +HELP: V/n +{ $values { "x" blas-vector-base } { "alpha" number } { "x/alpha" blas-vector-base } } +{ $description "Calculate the scalar-vector product " { $snippet "(1/α)x" } " and return a freshly-allocated vector with the same length as " { $snippet "x" } " containing the result. Corresponds to the xSCAL routines in BLAS." } ; + +{ n*V+V! n*V! n*V+V n*V V+ V- Vneg V*n V/n } related-words + +HELP: Vsub +{ $values { "v" blas-vector-base } { "start" integer } { "length" integer } { "sub" blas-vector-base } } +{ $description "Slice a subvector out of " { $snippet "v" } " starting at " { $snippet "start" } " with the given " { $snippet "length" } ". The subvector will share storage with the parent vector." } ; diff --git a/basis/math/blas/vectors/vectors-tests.factor b/basis/math/blas/vectors/vectors-tests.factor new file mode 100644 index 0000000000..5f9e8fdc42 --- /dev/null +++ b/basis/math/blas/vectors/vectors-tests.factor @@ -0,0 +1,180 @@ +USING: kernel math.blas.vectors math.blas.syntax sequences tools.test ; +IN: math.blas.vectors.tests + +! clone + +[ svector{ 1.0 2.0 3.0 } ] [ svector{ 1.0 2.0 3.0 } clone ] unit-test +[ f ] [ svector{ 1.0 2.0 3.0 } dup clone eq? ] unit-test +[ dvector{ 1.0 2.0 3.0 } ] [ dvector{ 1.0 2.0 3.0 } clone ] unit-test +[ f ] [ dvector{ 1.0 2.0 3.0 } dup clone eq? ] unit-test +[ cvector{ 1.0 C{ 2.0 3.0 } 4.0 } ] [ cvector{ 1.0 C{ 2.0 3.0 } 4.0 } clone ] unit-test +[ f ] [ cvector{ 1.0 C{ 2.0 3.0 } 4.0 } dup clone eq? ] unit-test +[ zvector{ 1.0 C{ 2.0 3.0 } 4.0 } ] [ zvector{ 1.0 C{ 2.0 3.0 } 4.0 } clone ] unit-test +[ f ] [ zvector{ 1.0 C{ 2.0 3.0 } 4.0 } dup clone eq? ] unit-test + +! nth + +[ 1.0 ] [ 2 svector{ 3.0 2.0 1.0 } nth ] unit-test +[ 1.0 ] [ 2 dvector{ 3.0 2.0 1.0 } nth ] unit-test + +[ C{ 1.0 2.0 } ] +[ 2 cvector{ C{ -3.0 -2.0 } C{ -1.0 0.0 } C{ 1.0 2.0 } } nth ] unit-test + +[ C{ 1.0 2.0 } ] +[ 2 zvector{ C{ -3.0 -2.0 } C{ -1.0 0.0 } C{ 1.0 2.0 } } nth ] unit-test + +! set-nth + +[ svector{ 3.0 2.0 0.0 } ] [ 0.0 2 svector{ 3.0 2.0 1.0 } [ set-nth ] keep ] unit-test +[ dvector{ 3.0 2.0 0.0 } ] [ 0.0 2 dvector{ 3.0 2.0 1.0 } [ set-nth ] keep ] unit-test + +[ cvector{ C{ -3.0 -2.0 } C{ -1.0 0.0 } C{ 3.0 4.0 } } ] [ + C{ 3.0 4.0 } 2 + cvector{ C{ -3.0 -2.0 } C{ -1.0 0.0 } C{ 1.0 2.0 } } + [ set-nth ] keep +] unit-test +[ zvector{ C{ -3.0 -2.0 } C{ -1.0 0.0 } C{ 3.0 4.0 } } ] [ + C{ 3.0 4.0 } 2 + zvector{ C{ -3.0 -2.0 } C{ -1.0 0.0 } C{ 1.0 2.0 } } + [ set-nth ] keep +] unit-test + +! V+ + +[ svector{ 11.0 22.0 } ] [ svector{ 1.0 2.0 } svector{ 10.0 20.0 } V+ ] unit-test +[ dvector{ 11.0 22.0 } ] [ dvector{ 1.0 2.0 } dvector{ 10.0 20.0 } V+ ] unit-test + +[ cvector{ 11.0 C{ 22.0 33.0 } } ] +[ cvector{ 1.0 C{ 2.0 3.0 } } cvector{ 10.0 C{ 20.0 30.0 } } V+ ] +unit-test + +[ zvector{ 11.0 C{ 22.0 33.0 } } ] +[ zvector{ 1.0 C{ 2.0 3.0 } } zvector{ 10.0 C{ 20.0 30.0 } } V+ ] +unit-test + +! V- + +[ svector{ 9.0 18.0 } ] [ svector{ 10.0 20.0 } svector{ 1.0 2.0 } V- ] unit-test +[ dvector{ 9.0 18.0 } ] [ dvector{ 10.0 20.0 } dvector{ 1.0 2.0 } V- ] unit-test + +[ cvector{ 9.0 C{ 18.0 27.0 } } ] +[ cvector{ 10.0 C{ 20.0 30.0 } } cvector{ 1.0 C{ 2.0 3.0 } } V- ] +unit-test + +[ zvector{ 9.0 C{ 18.0 27.0 } } ] +[ zvector{ 10.0 C{ 20.0 30.0 } } zvector{ 1.0 C{ 2.0 3.0 } } V- ] +unit-test + +! Vneg + +[ svector{ 1.0 -2.0 } ] [ svector{ -1.0 2.0 } Vneg ] unit-test +[ dvector{ 1.0 -2.0 } ] [ dvector{ -1.0 2.0 } Vneg ] unit-test + +[ cvector{ 1.0 C{ -2.0 3.0 } } ] [ cvector{ -1.0 C{ 2.0 -3.0 } } Vneg ] unit-test +[ zvector{ 1.0 C{ -2.0 3.0 } } ] [ zvector{ -1.0 C{ 2.0 -3.0 } } Vneg ] unit-test + +! n*V + +[ svector{ 100.0 200.0 } ] [ 10.0 svector{ 10.0 20.0 } n*V ] unit-test +[ dvector{ 100.0 200.0 } ] [ 10.0 dvector{ 10.0 20.0 } n*V ] unit-test + +[ cvector{ C{ 20.0 4.0 } C{ 8.0 12.0 } } ] +[ C{ 10.0 2.0 } cvector{ 2.0 C{ 1.0 1.0 } } n*V ] +unit-test + +[ zvector{ C{ 20.0 4.0 } C{ 8.0 12.0 } } ] +[ C{ 10.0 2.0 } zvector{ 2.0 C{ 1.0 1.0 } } n*V ] +unit-test + +! V*n + +[ svector{ 100.0 200.0 } ] [ svector{ 10.0 20.0 } 10.0 V*n ] unit-test +[ dvector{ 100.0 200.0 } ] [ dvector{ 10.0 20.0 } 10.0 V*n ] unit-test + +[ cvector{ C{ 20.0 4.0 } C{ 8.0 12.0 } } ] +[ cvector{ 2.0 C{ 1.0 1.0 } } C{ 10.0 2.0 } V*n ] +unit-test + +[ zvector{ C{ 20.0 4.0 } C{ 8.0 12.0 } } ] +[ zvector{ 2.0 C{ 1.0 1.0 } } C{ 10.0 2.0 } V*n ] +unit-test + +! V/n + +[ svector{ 1.0 2.0 } ] [ svector{ 4.0 8.0 } 4.0 V/n ] unit-test +[ dvector{ 1.0 2.0 } ] [ dvector{ 4.0 8.0 } 4.0 V/n ] unit-test + +[ cvector{ C{ 0.0 -4.0 } 1.0 } ] +[ cvector{ C{ 4.0 -4.0 } C{ 1.0 1.0 } } C{ 1.0 1.0 } V/n ] +unit-test + +[ zvector{ C{ 0.0 -4.0 } 1.0 } ] +[ zvector{ C{ 4.0 -4.0 } C{ 1.0 1.0 } } C{ 1.0 1.0 } V/n ] +unit-test + +! V. + +[ 7.0 ] [ svector{ 1.0 2.5 } svector{ 2.0 2.0 } V. ] unit-test +[ 7.0 ] [ dvector{ 1.0 2.5 } dvector{ 2.0 2.0 } V. ] unit-test +[ C{ 7.0 7.0 } ] [ cvector{ C{ 1.0 1.0 } 2.5 } cvector{ 2.0 C{ 2.0 2.0 } } V. ] unit-test +[ C{ 7.0 7.0 } ] [ zvector{ C{ 1.0 1.0 } 2.5 } zvector{ 2.0 C{ 2.0 2.0 } } V. ] unit-test + +! V.conj + +[ C{ 7.0 3.0 } ] [ cvector{ C{ 1.0 1.0 } 2.5 } cvector{ 2.0 C{ 2.0 2.0 } } V.conj ] unit-test +[ C{ 7.0 3.0 } ] [ zvector{ C{ 1.0 1.0 } 2.5 } zvector{ 2.0 C{ 2.0 2.0 } } V.conj ] unit-test + +! Vnorm + +[ 5.0 ] [ svector{ 3.0 4.0 } Vnorm ] unit-test +[ 5.0 ] [ dvector{ 3.0 4.0 } Vnorm ] unit-test + +[ 13.0 ] [ cvector{ C{ 3.0 4.0 } 12.0 } Vnorm ] unit-test +[ 13.0 ] [ zvector{ C{ 3.0 4.0 } 12.0 } Vnorm ] unit-test + +! Vasum + +[ 6.0 ] [ svector{ 1.0 2.0 -3.0 } Vasum ] unit-test +[ 6.0 ] [ dvector{ 1.0 2.0 -3.0 } Vasum ] unit-test + +[ 15.0 ] [ cvector{ 1.0 C{ -2.0 3.0 } C{ 4.0 -5.0 } } Vasum ] unit-test +[ 15.0 ] [ zvector{ 1.0 C{ -2.0 3.0 } C{ 4.0 -5.0 } } Vasum ] unit-test + +! Vswap + +[ svector{ 2.0 2.0 } svector{ 1.0 1.0 } ] +[ svector{ 1.0 1.0 } svector{ 2.0 2.0 } Vswap ] +unit-test + +[ dvector{ 2.0 2.0 } dvector{ 1.0 1.0 } ] +[ dvector{ 1.0 1.0 } dvector{ 2.0 2.0 } Vswap ] +unit-test + +[ cvector{ 2.0 C{ 2.0 2.0 } } cvector{ C{ 1.0 1.0 } 1.0 } ] +[ cvector{ C{ 1.0 1.0 } 1.0 } cvector{ 2.0 C{ 2.0 2.0 } } Vswap ] +unit-test + +[ zvector{ 2.0 C{ 2.0 2.0 } } zvector{ C{ 1.0 1.0 } 1.0 } ] +[ zvector{ C{ 1.0 1.0 } 1.0 } zvector{ 2.0 C{ 2.0 2.0 } } Vswap ] +unit-test + +! Viamax + +[ 3 ] [ svector{ 1.0 -5.0 4.0 -6.0 -1.0 } Viamax ] unit-test +[ 3 ] [ dvector{ 1.0 -5.0 4.0 -6.0 -1.0 } Viamax ] unit-test +[ 0 ] [ cvector{ C{ 2.0 -5.0 } 4.0 -6.0 -1.0 } Viamax ] unit-test +[ 0 ] [ zvector{ C{ 2.0 -5.0 } 4.0 -6.0 -1.0 } Viamax ] unit-test + +! Vamax + +[ -6.0 ] [ svector{ 1.0 -5.0 4.0 -6.0 -1.0 } Vamax ] unit-test +[ -6.0 ] [ dvector{ 1.0 -5.0 4.0 -6.0 -1.0 } Vamax ] unit-test +[ C{ 2.0 -5.0 } ] [ cvector{ C{ 2.0 -5.0 } 4.0 -6.0 -1.0 } Vamax ] unit-test +[ C{ 2.0 -5.0 } ] [ zvector{ C{ 2.0 -5.0 } 4.0 -6.0 -1.0 } Vamax ] unit-test + +! Vsub + +[ svector{ -5.0 4.0 -6.0 } ] [ svector{ 1.0 -5.0 4.0 -6.0 -1.0 } 1 3 Vsub ] unit-test +[ dvector{ -5.0 4.0 -6.0 } ] [ dvector{ 1.0 -5.0 4.0 -6.0 -1.0 } 1 3 Vsub ] unit-test +[ cvector{ -5.0 C{ 4.0 3.0 } -6.0 } ] [ cvector{ 1.0 -5.0 C{ 4.0 3.0 } -6.0 -1.0 } 1 3 Vsub ] unit-test +[ zvector{ -5.0 C{ 4.0 3.0 } -6.0 } ] [ zvector{ 1.0 -5.0 C{ 4.0 3.0 } -6.0 -1.0 } 1 3 Vsub ] unit-test diff --git a/basis/math/blas/vectors/vectors.factor b/basis/math/blas/vectors/vectors.factor new file mode 100755 index 0000000000..db027b0ffd --- /dev/null +++ b/basis/math/blas/vectors/vectors.factor @@ -0,0 +1,272 @@ +USING: accessors alien alien.c-types arrays byte-arrays combinators +combinators.short-circuit fry kernel math math.blas.cblas +math.complex math.functions math.order sequences.complex +sequences.complex-components sequences sequences.private +functors words locals +specialized-arrays.float specialized-arrays.double +specialized-arrays.direct.float specialized-arrays.direct.double ; +IN: math.blas.vectors + +TUPLE: blas-vector-base underlying length inc ; + +INSTANCE: blas-vector-base virtual-sequence + +GENERIC: element-type ( v -- type ) + +GENERIC: n*V+V! ( alpha x y -- y=alpha*x+y ) +GENERIC: n*V! ( alpha x -- x=alpha*x ) +GENERIC: V. ( x y -- x.y ) +GENERIC: V.conj ( x y -- xconj.y ) +GENERIC: Vnorm ( x -- norm ) +GENERIC: Vasum ( x -- sum ) +GENERIC: Vswap ( x y -- x=y y=x ) +GENERIC: Viamax ( x -- max-i ) + +> ] bi@ min ; inline +: data-and-inc ( v -- data inc ) + [ underlying>> ] [ inc>> ] bi ; inline +: datas-and-incs ( v1 v2 -- v1-data v1-inc v2-data v2-inc ) + [ data-and-inc ] bi@ ; inline + +:: (prepare-copy) + ( v element-size -- length v-data v-inc v-dest-data v-dest-inc + copy-data copy-length copy-inc ) + v [ length>> ] [ data-and-inc ] bi + v length>> element-size * + 1 + over v length>> 1 ; + +: (prepare-swap) + ( v1 v2 -- length v1-data v1-inc v2-data v2-inc + v1 v2 ) + [ shorter-length ] [ datas-and-incs ] [ ] 2tri ; + +:: (prepare-axpy) + ( n v1 v2 -- length n v1-data v1-inc v2-data v2-inc + v2 ) + v1 v2 shorter-length + n + v1 v2 datas-and-incs + v2 ; + +:: (prepare-scal) + ( n v -- length n v-data v-inc + v ) + v length>> + n + v data-and-inc + v ; + +: (prepare-dot) ( v1 v2 -- length v1-data v1-inc v2-data v2-inc ) + [ shorter-length ] [ datas-and-incs ] 2bi ; + +: (prepare-nrm2) ( v -- length data inc ) + [ length>> ] [ data-and-inc ] bi ; + +PRIVATE> + +: n*V+V ( alpha x y -- alpha*x+y ) clone n*V+V! ; inline +: n*V ( alpha x -- alpha*x ) clone n*V! ; inline + +: V+ ( x y -- x+y ) + 1.0 -rot n*V+V ; inline +: V- ( x y -- x-y ) + -1.0 spin n*V+V ; inline + +: Vneg ( x -- -x ) + -1.0 swap n*V ; inline + +: V*n ( x alpha -- x*alpha ) + swap n*V ; inline +: V/n ( x alpha -- x/alpha ) + recip swap n*V ; inline + +: Vamax ( x -- max ) + [ Viamax ] keep nth ; inline + +:: Vsub ( v start length -- sub ) + v inc>> start * v element-type heap-size * + v underlying>> + length v inc>> v (blas-vector-like) ; + +: ( exemplar -- zero ) + [ element-type ] + [ length>> 0 ] + [ (blas-vector-like) ] tri ; + +: ( length exemplar -- vector ) + [ element-type ] + [ 1 swap ] 2bi + (blas-vector-like) ; + +M: blas-vector-base equal? + { + [ [ length ] bi@ = ] + [ [ = ] 2all? ] + } 2&& ; + +M: blas-vector-base length + length>> ; +M: blas-vector-base virtual-seq + (blas-direct-array) ; +M: blas-vector-base virtual@ + [ inc>> * ] [ nip (blas-direct-array) ] 2bi ; + +: float>arg ( f -- f ) ; inline +: double>arg ( f -- f ) ; inline +: arg>float ( f -- f ) ; inline +: arg>double ( f -- f ) ; inline + +<< + +FUNCTOR: (define-blas-vector) ( TYPE T -- ) + + IS +>ARRAY IS >${TYPE}-array +XCOPY IS cblas_${T}copy +XSWAP IS cblas_${T}swap +IXAMAX IS cblas_i${T}amax + +VECTOR DEFINES ${TYPE}-blas-vector + DEFINES <${TYPE}-blas-vector> +>VECTOR DEFINES >${TYPE}-blas-vector + +WHERE + +TUPLE: VECTOR < blas-vector-base ; +: ( underlying length inc -- vector ) VECTOR boa ; inline + +: >VECTOR ( seq -- v ) + [ >ARRAY execute underlying>> ] [ length ] bi 1 execute ; + +M: VECTOR clone + TYPE heap-size (prepare-copy) + [ XCOPY execute ] 3dip execute ; + +M: VECTOR element-type + drop TYPE ; +M: VECTOR Vswap + (prepare-swap) [ XSWAP execute ] 2dip ; +M: VECTOR Viamax + (prepare-nrm2) IXAMAX execute ; + +M: VECTOR (blas-vector-like) + drop execute ; + +M: VECTOR (blas-direct-array) + [ underlying>> ] + [ [ length>> ] [ inc>> ] bi * ] bi + execute ; + +;FUNCTOR + + +FUNCTOR: (define-real-blas-vector) ( TYPE T -- ) + +VECTOR IS ${TYPE}-blas-vector +XDOT IS cblas_${T}dot +XNRM2 IS cblas_${T}nrm2 +XASUM IS cblas_${T}asum +XAXPY IS cblas_${T}axpy +XSCAL IS cblas_${T}scal + +WHERE + +M: VECTOR V. + (prepare-dot) XDOT execute ; +M: VECTOR V.conj + (prepare-dot) XDOT execute ; +M: VECTOR Vnorm + (prepare-nrm2) XNRM2 execute ; +M: VECTOR Vasum + (prepare-nrm2) XASUM execute ; +M: VECTOR n*V+V! + (prepare-axpy) [ XAXPY execute ] dip ; +M: VECTOR n*V! + (prepare-scal) [ XSCAL execute ] dip ; + +;FUNCTOR + + +FUNCTOR: (define-complex-helpers) ( TYPE -- ) + + DEFINES +>COMPLEX-ARRAY DEFINES >${TYPE}-complex-array +ARG>COMPLEX DEFINES arg>${TYPE}-complex +COMPLEX>ARG DEFINES ${TYPE}-complex>arg + IS +>ARRAY IS >${TYPE}-array + +WHERE + +: ( alien len -- sequence ) + 1 shift execute ; +: >COMPLEX-ARRAY ( sequence -- sequence ) + >ARRAY execute ; +: COMPLEX>ARG ( complex -- alien ) + >rect 2array >ARRAY execute underlying>> ; +: ARG>COMPLEX ( alien -- complex ) + 2 execute first2 rect> ; + +;FUNCTOR + + +FUNCTOR: (define-complex-blas-vector) ( TYPE C S -- ) + +VECTOR IS ${TYPE}-blas-vector +XDOTU_SUB IS cblas_${C}dotu_sub +XDOTC_SUB IS cblas_${C}dotc_sub +XXNRM2 IS cblas_${S}${C}nrm2 +XXASUM IS cblas_${S}${C}asum +XAXPY IS cblas_${C}axpy +XSCAL IS cblas_${C}scal +TYPE>ARG IS ${TYPE}>arg +ARG>TYPE IS arg>${TYPE} + +WHERE + +M: VECTOR V. + (prepare-dot) TYPE + [ XDOTU_SUB execute ] keep + ARG>TYPE execute ; +M: VECTOR V.conj + (prepare-dot) TYPE + [ XDOTC_SUB execute ] keep + ARG>TYPE execute ; +M: VECTOR Vnorm + (prepare-nrm2) XXNRM2 execute ; +M: VECTOR Vasum + (prepare-nrm2) XXASUM execute ; +M: VECTOR n*V+V! + [ TYPE>ARG execute ] 2dip + (prepare-axpy) [ XAXPY execute ] dip ; +M: VECTOR n*V! + [ TYPE>ARG execute ] dip + (prepare-scal) [ XSCAL execute ] dip ; + +;FUNCTOR + + +: define-real-blas-vector ( TYPE T -- ) + [ (define-blas-vector) ] + [ (define-real-blas-vector) ] 2bi ; +:: define-complex-blas-vector ( TYPE C S -- ) + TYPE (define-complex-helpers) + TYPE "-complex" append + [ C (define-blas-vector) ] + [ C S (define-complex-blas-vector) ] bi ; + +"float" "s" define-real-blas-vector +"double" "d" define-real-blas-vector +"float" "c" "s" define-complex-blas-vector +"double" "z" "d" define-complex-blas-vector + +>> + diff --git a/basis/math/functions/functions-tests.factor b/basis/math/functions/functions-tests.factor index a06a67e4a1..cf0ce5f0bb 100644 --- a/basis/math/functions/functions-tests.factor +++ b/basis/math/functions/functions-tests.factor @@ -97,7 +97,7 @@ IN: math.functions.tests : verify-gcd ( a b -- ? ) 2dup gcd - >r rot * swap rem r> = ; + [ rot * swap rem ] dip = ; [ t ] [ 123 124 verify-gcd ] unit-test [ t ] [ 50 120 verify-gcd ] unit-test diff --git a/basis/math/intervals/intervals-tests.factor b/basis/math/intervals/intervals-tests.factor index 8c29171a57..378ca2fb4b 100644 --- a/basis/math/intervals/intervals-tests.factor +++ b/basis/math/intervals/intervals-tests.factor @@ -255,8 +255,7 @@ IN: math.intervals.tests 0 pick interval-contains? over first \ recip eq? and [ 2drop t ] [ - [ >r random-element ! dup . - r> first execute ] 2keep + [ [ random-element ] dip first execute ] 2keep second execute interval-contains? ] if ; @@ -287,8 +286,7 @@ IN: math.intervals.tests 0 pick interval-contains? over first { / /i mod rem } member? and [ 3drop t ] [ - [ >r [ random-element ] bi@ ! 2dup . . - r> first execute ] 3keep + [ [ [ random-element ] bi@ ] dip first execute ] 3keep second execute interval-contains? ] if ; @@ -304,7 +302,7 @@ IN: math.intervals.tests : comparison-test ( -- ? ) random-interval random-interval random-comparison - [ >r [ random-element ] bi@ r> first execute ] 3keep + [ [ [ random-element ] bi@ ] dip first execute ] 3keep second execute dup incomparable eq? [ 2drop t ] [ = ] if ; [ t ] [ 40000 [ drop comparison-test ] all? ] unit-test diff --git a/basis/math/miller-rabin/authors.txt b/basis/math/miller-rabin/authors.txt new file mode 100755 index 0000000000..7c1b2f2279 --- /dev/null +++ b/basis/math/miller-rabin/authors.txt @@ -0,0 +1 @@ +Doug Coleman diff --git a/basis/math/miller-rabin/miller-rabin-tests.factor b/basis/math/miller-rabin/miller-rabin-tests.factor new file mode 100644 index 0000000000..9ca85ea72c --- /dev/null +++ b/basis/math/miller-rabin/miller-rabin-tests.factor @@ -0,0 +1,10 @@ +USING: math.miller-rabin tools.test ; +IN: math.miller-rabin.tests + +[ f ] [ 473155932665450549999756893736999469773678960651272093993257221235459777950185377130233556540099119926369437865330559863 miller-rabin ] unit-test +[ t ] [ 2 miller-rabin ] unit-test +[ t ] [ 3 miller-rabin ] unit-test +[ f ] [ 36 miller-rabin ] unit-test +[ t ] [ 37 miller-rabin ] unit-test +[ 101 ] [ 100 next-prime ] unit-test +[ 100000000000031 ] [ 100000000000000 next-prime ] unit-test diff --git a/basis/math/miller-rabin/miller-rabin.factor b/basis/math/miller-rabin/miller-rabin.factor new file mode 100755 index 0000000000..afaa66e68f --- /dev/null +++ b/basis/math/miller-rabin/miller-rabin.factor @@ -0,0 +1,68 @@ +! Copyright (C) 2008 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: combinators io locals kernel math math.functions +math.ranges namespaces random sequences hashtables sets ; +IN: math.miller-rabin + +: >even ( n -- int ) dup even? [ 1- ] unless ; foldable +: >odd ( n -- int ) dup even? [ 1+ ] when ; foldable +: next-odd ( m -- n ) dup even? [ 1+ ] [ 2 + ] if ; + +TUPLE: positive-even-expected n ; + +:: (miller-rabin) ( n trials -- ? ) + [let | r [ n 1- factor-2s drop ] + s [ n 1- factor-2s nip ] + prime?! [ t ] + a! [ 0 ] + count! [ 0 ] | + trials [ + n 1- [1,b] random a! + a s n ^mod 1 = [ + 0 count! + r [ + 2^ s * a swap n ^mod n - -1 = + [ count 1+ count! r + ] when + ] each + count zero? [ f prime?! trials + ] when + ] unless drop + ] each prime? ] ; + +: miller-rabin* ( n numtrials -- ? ) + over { + { [ dup 1 <= ] [ 3drop f ] } + { [ dup 2 = ] [ 3drop t ] } + { [ dup even? ] [ 3drop f ] } + [ [ drop (miller-rabin) ] with-scope ] + } cond ; + +: miller-rabin ( n -- ? ) 10 miller-rabin* ; + +: next-prime ( n -- p ) + next-odd dup miller-rabin [ next-prime ] unless ; + +: random-prime ( numbits -- p ) + random-bits next-prime ; + +ERROR: no-relative-prime n ; + +: (find-relative-prime) ( n guess -- p ) + over 1 <= [ over no-relative-prime ] when + dup 1 <= [ drop 3 ] when + 2dup gcd nip 1 > [ 2 + (find-relative-prime) ] [ nip ] if ; + +: find-relative-prime* ( n guess -- p ) + #! find a prime relative to n with initial guess + >odd (find-relative-prime) ; + +: find-relative-prime ( n -- p ) + dup random find-relative-prime* ; + +ERROR: too-few-primes ; + +: unique-primes ( numbits n -- seq ) + #! generate two primes + swap + dup 5 < [ too-few-primes ] when + 2dup [ random-prime ] curry replicate + dup all-unique? [ 2nip ] [ drop unique-primes ] if ; diff --git a/basis/math/miller-rabin/summary.txt b/basis/math/miller-rabin/summary.txt new file mode 100644 index 0000000000..b2591a3182 --- /dev/null +++ b/basis/math/miller-rabin/summary.txt @@ -0,0 +1 @@ +Miller-Rabin probabilistic primality test diff --git a/basis/math/statistics/statistics.factor b/basis/math/statistics/statistics.factor index d2494ee32a..09caebcf07 100644 --- a/basis/math/statistics/statistics.factor +++ b/basis/math/statistics/statistics.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2008 Doug Coleman, Michael Judge. ! See http://factorcode.org/license.txt for BSD license. -USING: arrays combinators kernel math math.analysis math.functions sequences - sequences.lib sorting ; +USING: arrays combinators kernel math math.analysis +math.functions math.order sequences sorting ; IN: math.statistics : mean ( seq -- n ) @@ -20,6 +20,10 @@ IN: math.statistics [ midpoint@ ] keep nth ] if ; +: minmax ( seq -- min max ) + #! find the min and max of a seq in one pass + [ 1/0. -1/0. ] dip [ tuck [ min ] [ max ] 2bi* ] each ; + : range ( seq -- n ) minmax swap - ; diff --git a/basis/opengl/gl/extensions/extensions.factor b/basis/opengl/gl/extensions/extensions.factor index ea37829d0e..fb2ddfaf3e 100644 --- a/basis/opengl/gl/extensions/extensions.factor +++ b/basis/opengl/gl/extensions/extensions.factor @@ -1,6 +1,6 @@ USING: alien alien.syntax alien.parser combinators kernel parser sequences system words namespaces hashtables init -math arrays assocs continuations lexer fry locals ; +math arrays assocs continuations lexer fry locals vocabs.parser ; IN: opengl.gl.extensions ERROR: unknown-gl-platform ; diff --git a/basis/opengl/gl/gl.factor b/basis/opengl/gl/gl.factor index a7337da353..c32f62bf33 100644 --- a/basis/opengl/gl/gl.factor +++ b/basis/opengl/gl/gl.factor @@ -4,7 +4,7 @@ ! This file is based on the gl.h that comes with xorg-x11 6.8.2 USING: alien alien.syntax combinators kernel parser sequences -system words opengl.gl.extensions alias constants ; +system words opengl.gl.extensions ; IN: opengl.gl diff --git a/basis/opengl/shaders/shaders.factor b/basis/opengl/shaders/shaders.factor index 5b63b63afe..eb5bbb0ee8 100755 --- a/basis/opengl/shaders/shaders.factor +++ b/basis/opengl/shaders/shaders.factor @@ -115,7 +115,7 @@ PREDICATE: fragment-shader < gl-shader (fragment-shader?) ; PREDICATE: gl-program < integer (gl-program?) ; : ( vertex-shader-source fragment-shader-source -- program ) - >r check-gl-shader - r> check-gl-shader + [ check-gl-shader ] + [ check-gl-shader ] bi* 2array check-gl-program ; diff --git a/basis/openssl/libssl/libssl.factor b/basis/openssl/libssl/libssl.factor index b8f897463a..e512e3134c 100644 --- a/basis/openssl/libssl/libssl.factor +++ b/basis/openssl/libssl/libssl.factor @@ -2,8 +2,7 @@ ! Portions copyright (C) 2008 Slava Pestov ! See http://factorcode.org/license.txt for BSD license. USING: alien alien.syntax combinators kernel system namespaces -assocs parser lexer sequences words quotations math.bitwise -alias constants ; +assocs parser lexer sequences words quotations math.bitwise ; IN: openssl.libssl diff --git a/basis/pack/authors.txt b/basis/pack/authors.txt new file mode 100644 index 0000000000..7c1b2f2279 --- /dev/null +++ b/basis/pack/authors.txt @@ -0,0 +1 @@ +Doug Coleman diff --git a/basis/pack/pack-tests.factor b/basis/pack/pack-tests.factor new file mode 100755 index 0000000000..b1a354cd4e --- /dev/null +++ b/basis/pack/pack-tests.factor @@ -0,0 +1,48 @@ +USING: io io.streams.string kernel namespaces make +pack strings tools.test ; + +[ B{ 1 0 2 0 0 3 0 0 0 4 0 0 0 0 0 0 0 5 } ] [ + { 1 2 3 4 5 } + "cstiq" pack-be +] unit-test + +[ { 1 2 3 4 5 } ] [ + { 1 2 3 4 5 } + "cstiq" [ pack-be ] keep unpack-be +] unit-test + +[ B{ 1 2 0 3 0 0 4 0 0 0 5 0 0 0 0 0 0 0 } ] [ + [ + { 1 2 3 4 5 } "cstiq" pack-le + ] with-scope +] unit-test + +[ { 1 2 3 4 5 } ] [ + { 1 2 3 4 5 } + "cstiq" [ pack-le ] keep unpack-le +] unit-test + +[ { -1 -2 -3 -4 -5 } ] [ + { -1 -2 -3 -4 -5 } + "cstiq" [ pack-le ] keep unpack-le +] unit-test + +[ { -1 -2 -3 -4 -5 3.14 } ] [ + { -1 -2 -3 -4 -5 3.14 } + "cstiqd" [ pack-be ] keep unpack-be +] unit-test + +[ { -1 -2 -3 -4 -5 } ] [ + { -1 -2 -3 -4 -5 } + "cstiq" [ pack-native ] keep unpack-native +] unit-test + +[ 2 ] [ + [ 2 "int" b, ] B{ } make + [ "int" read-native ] with-input-stream +] unit-test + +[ "FRAM" ] [ "FRAM\0" [ read-c-string ] with-string-reader ] unit-test +[ f ] [ "" [ read-c-string ] with-string-reader ] unit-test +[ 5 ] [ "FRAM\0\u000005\0\0\0\0\0\0\0" [ read-c-string drop read-u64 ] with-string-reader ] unit-test + diff --git a/basis/pack/pack.factor b/basis/pack/pack.factor new file mode 100755 index 0000000000..0e5cb7dbbc --- /dev/null +++ b/basis/pack/pack.factor @@ -0,0 +1,174 @@ +USING: alien alien.c-types arrays assocs byte-arrays io +io.binary io.streams.string kernel math math.parser namespaces +make parser prettyprint quotations sequences strings vectors +words macros math.functions math.bitwise ; +IN: pack + +SYMBOL: big-endian + +: big-endian? ( -- ? ) + 1 *char zero? ; + +: >endian ( obj n -- str ) + big-endian get [ >be ] [ >le ] if ; inline + +: endian> ( obj -- str ) + big-endian get [ be> ] [ le> ] if ; inline + +GENERIC: b, ( n obj -- ) +M: integer b, ( m n -- ) >endian % ; + +! for doing native, platform-dependent sized values +M: string b, ( n string -- ) heap-size b, ; +: read-native ( string -- n ) heap-size read endian> ; + +! Portable +: s8, ( n -- ) 1 b, ; +: u8, ( n -- ) 1 b, ; +: s16, ( n -- ) 2 b, ; +: u16, ( n -- ) 2 b, ; +: s24, ( n -- ) 3 b, ; +: u24, ( n -- ) 3 b, ; +: s32, ( n -- ) 4 b, ; +: u32, ( n -- ) 4 b, ; +: s64, ( n -- ) 8 b, ; +: u64, ( n -- ) 8 b, ; +: s128, ( n -- ) 16 b, ; +: u128, ( n -- ) 16 b, ; +: float, ( n -- ) float>bits 4 b, ; +: double, ( n -- ) double>bits 8 b, ; +: c-string, ( str -- ) % 0 u8, ; + +: (>128-ber) ( n -- ) + dup 0 > [ + [ HEX: 7f bitand HEX: 80 bitor , ] keep -7 shift + (>128-ber) + ] [ + drop + ] if ; + +: >128-ber ( n -- str ) + [ + [ HEX: 7f bitand , ] keep -7 shift + (>128-ber) + ] { } make reverse ; + +: >signed ( x n -- y ) + 2dup neg 1+ shift 1 = [ 2^ - ] [ drop ] if ; + +: read-signed ( n -- str ) + dup read endian> swap 8 * >signed ; + +: read-unsigned ( n -- m ) read endian> ; + +: read-s8 ( -- n ) 1 read-signed ; +: read-u8 ( -- n ) 1 read-unsigned ; +: read-s16 ( -- n ) 2 read-signed ; +: read-u16 ( -- n ) 2 read-unsigned ; +: read-s24 ( -- n ) 3 read-signed ; +: read-u24 ( -- n ) 3 read-unsigned ; +: read-s32 ( -- n ) 4 read-signed ; +: read-u32 ( -- n ) 4 read-unsigned ; +: read-s64 ( -- n ) 8 read-signed ; +: read-u64 ( -- n ) 8 read-signed ; +: read-s128 ( -- n ) 16 read-signed ; +: read-u128 ( -- n ) 16 read-unsigned ; + +: read-float ( -- n ) + 4 read endian> bits>float ; + +: read-double ( -- n ) + 8 read endian> bits>double ; + +: read-c-string ( -- str/f ) + "\0" read-until [ drop f ] unless ; + +: read-c-string* ( n -- str/f ) + read [ zero? ] trim-right [ f ] when-empty ; + +: (read-128-ber) ( n -- n ) + read1 + [ [ 7 shift ] [ 7 clear-bit ] bi* bitor ] keep + 7 bit? [ (read-128-ber) ] when ; + +: read-128-ber ( -- n ) + 0 (read-128-ber) ; + +: pack-table ( -- hash ) + H{ + { CHAR: c s8, } + { CHAR: C u8, } + { CHAR: s s16, } + { CHAR: S u16, } + { CHAR: t s24, } + { CHAR: T u24, } + { CHAR: i s32, } + { CHAR: I u32, } + { CHAR: q s64, } + { CHAR: Q u64, } + { CHAR: f float, } + { CHAR: F float, } + { CHAR: d double, } + { CHAR: D double, } + } ; + +: unpack-table ( -- hash ) + H{ + { CHAR: c read-s8 } + { CHAR: C read-u8 } + { CHAR: s read-s16 } + { CHAR: S read-u16 } + { CHAR: t read-s24 } + { CHAR: T read-u24 } + { CHAR: i read-s32 } + { CHAR: I read-u32 } + { CHAR: q read-s64 } + { CHAR: Q read-u64 } + { CHAR: f read-float } + { CHAR: F read-float } + { CHAR: d read-double } + { CHAR: D read-double } + } ; + +MACRO: (pack) ( seq str -- quot ) + [ + [ + [ + swap , pack-table at , + ] 2each + ] [ ] make 1quotation % + [ B{ } make ] % + ] [ ] make ; + +: pack-native ( seq str -- seq ) + [ + big-endian? big-endian set (pack) + ] with-scope ; + +: pack-be ( seq str -- seq ) + [ big-endian on (pack) ] with-scope ; + +: pack-le ( seq str -- seq ) + [ big-endian off (pack) ] with-scope ; + + +MACRO: (unpack) ( str -- quot ) + [ + [ + [ unpack-table at , \ , , ] each + ] [ ] make + 1quotation [ { } make ] append + 1quotation % + \ with-string-reader , + ] [ ] make ; + +: unpack-native ( seq str -- seq ) + [ + big-endian? big-endian set (unpack) + ] with-scope ; + +: unpack-be ( seq str -- seq ) + [ big-endian on (unpack) ] with-scope ; + +: unpack-le ( seq str -- seq ) + [ big-endian off (unpack) ] with-scope ; diff --git a/basis/persistent/deques/deques.factor b/basis/persistent/deques/deques.factor index 83c4a196d9..be63d807b9 100644 --- a/basis/persistent/deques/deques.factor +++ b/basis/persistent/deques/deques.factor @@ -1,6 +1,6 @@ ! Copyback (C) 2008 Daniel Ehrenberg ! See http://factorcode.org/license.txt for BSD license. -USING: kernel accessors math qualified ; +USING: kernel accessors math ; QUALIFIED: sequences IN: persistent.deques @@ -14,7 +14,7 @@ C: cons : each ( list quot: ( elt -- ) -- ) over - [ [ >r car>> r> call ] [ >r cdr>> r> ] 2bi each ] + [ [ [ car>> ] dip call ] [ [ cdr>> ] dip ] 2bi each ] [ 2drop ] if ; inline recursive : reduce ( list start quot -- end ) @@ -27,7 +27,7 @@ C: cons 0 [ drop 1+ ] reduce ; : cut ( list index -- back front-reversed ) - f swap [ >r [ cdr>> ] [ car>> ] bi r> ] times ; + f swap [ [ [ cdr>> ] [ car>> ] bi ] dip ] times ; : split-reverse ( list -- back-reversed front ) dup length 2/ cut [ reverse ] bi@ ; @@ -41,7 +41,7 @@ TUPLE: deque { front read-only } { back read-only } ; [ back>> ] [ front>> ] bi deque boa ; : flipped ( deque quot -- newdeque ) - >r flip r> call flip ; + [ flip ] dip call flip ; PRIVATE> : deque-empty? ( deque -- ? ) diff --git a/basis/persistent/heaps/heaps.factor b/basis/persistent/heaps/heaps.factor index 6381b91dc3..f6d38b5b25 100644 --- a/basis/persistent/heaps/heaps.factor +++ b/basis/persistent/heaps/heaps.factor @@ -32,7 +32,7 @@ PRIVATE> [ >branch< swap remove-left -rot [ ] 2dip rot ] if ; : both-with? ( obj a b quot -- ? ) - swap >r with r> swap both? ; inline + swap [ with ] dip swap both? ; inline GENERIC: sift-down ( value prio left right -- heap ) diff --git a/basis/porter-stemmer/authors.txt b/basis/porter-stemmer/authors.txt new file mode 100644 index 0000000000..1901f27a24 --- /dev/null +++ b/basis/porter-stemmer/authors.txt @@ -0,0 +1 @@ +Slava Pestov diff --git a/basis/porter-stemmer/porter-stemmer-docs.factor b/basis/porter-stemmer/porter-stemmer-docs.factor new file mode 100644 index 0000000000..e16190f861 --- /dev/null +++ b/basis/porter-stemmer/porter-stemmer-docs.factor @@ -0,0 +1,74 @@ +IN: porter-stemmer +USING: help.markup help.syntax ; + +HELP: step1a +{ $values { "str" "a string" } { "newstr" "a new string" } } +{ $description "Gets rid of plurals." } +{ $examples + { $table + { "Input:" "Output:" } + { "caresses" "caress" } + { "ponies" "poni" } + { "ties" "ti" } + { "caress" "caress" } + { "cats" "cat" } + } +} ; + +HELP: step1b +{ $values { "str" "a string" } { "newstr" "a new string" } } +{ $description "Gets rid of \"-ed\" and \"-ing\" suffixes." } +{ $examples + { $table + { "Input:" "Output:" } + { "feed" "feed" } + { "agreed" "agree" } + { "disabled" "disable" } + { "matting" "mat" } + { "mating" "mate" } + { "meeting" "meet" } + { "milling" "mill" } + { "messing" "mess" } + { "meetings" "meet" } + } +} ; + +HELP: step1c +{ $values { "str" "a string" } { "newstr" "a new string" } } +{ $description "Turns a terminal y to i when there is another vowel in the stem." } ; + +HELP: step2 +{ $values { "str" "a string" } { "newstr" "a new string" } } +{ $description "Maps double suffices to single ones. so -ization maps to -ize etc. note that the string before the suffix must give positive " { $link consonant-seq } "." } ; + +HELP: step3 +{ $values { "str" "a string" } { "newstr" "a new string" } } +{ $description "Deals with -c-, -full, -ness, etc. Similar strategy to " { $link step2 } "." } ; + +HELP: step5 +{ $values { "str" "a string" } { "newstr" "a new string" } } +{ $description "Removes a final -e and changes a final -ll to -l if " { $link consonant-seq } " is greater than 1," } ; + +HELP: stem +{ $values { "str" "a string" } { "newstr" "a new string" } } +{ $description "Applies the Porter stemming algorithm to the input string." } ; + +ARTICLE: "porter-stemmer" "Porter stemming algorithm" +"The help system uses the Porter stemming algorithm to normalize words when building the full-text search index." +$nl +"The Factor implementation of the algorithm is based on the Common Lisp version, which was hand-translated from ANSI C by Steven M. Haflich. The original ANSI C was written by Martin Porter." +$nl +"A detailed description of the algorithm, along with implementations in various languages, can be at in " { $url "http://www.tartarus.org/~martin/PorterStemmer" } "." +$nl +"The main word of the algorithm takes an English word as input and outputs its stem:" +{ $subsection stem } +"The algorithm consists of a number of steps:" +{ $subsection step1a } +{ $subsection step1b } +{ $subsection step1c } +{ $subsection step2 } +{ $subsection step3 } +{ $subsection step4 } +{ $subsection step5 } ; + +ABOUT: "porter-stemmer" diff --git a/basis/porter-stemmer/porter-stemmer-tests.factor b/basis/porter-stemmer/porter-stemmer-tests.factor new file mode 100644 index 0000000000..72bf5c0bb5 --- /dev/null +++ b/basis/porter-stemmer/porter-stemmer-tests.factor @@ -0,0 +1,64 @@ +IN: porter-stemmer.tests +USING: arrays io kernel porter-stemmer sequences tools.test +io.files io.encodings.utf8 ; + +[ 0 ] [ "xa" consonant-seq ] unit-test +[ 0 ] [ "xxaa" consonant-seq ] unit-test +[ 1 ] [ "xaxa" consonant-seq ] unit-test +[ 2 ] [ "xaxaxa" consonant-seq ] unit-test +[ 3 ] [ "xaxaxaxa" consonant-seq ] unit-test +[ 3 ] [ "zzzzxaxaxaxaeee" consonant-seq ] unit-test + +[ t ] [ 0 "fish" consonant? ] unit-test +[ f ] [ 0 "and" consonant? ] unit-test +[ t ] [ 0 "yes" consonant? ] unit-test +[ f ] [ 1 "gym" consonant? ] unit-test + +[ t ] [ 5 "splitting" double-consonant? ] unit-test +[ f ] [ 2 "feel" double-consonant? ] unit-test + +[ f ] [ "xxxz" stem-vowel? ] unit-test +[ t ] [ "baobab" stem-vowel? ] unit-test + +[ t ] [ "hop" cvc? ] unit-test +[ t ] [ "cav" cvc? ] unit-test +[ t ] [ "lov" cvc? ] unit-test +[ t ] [ "crim" cvc? ] unit-test +[ f ] [ "show" cvc? ] unit-test +[ f ] [ "box" cvc? ] unit-test +[ f ] [ "tray" cvc? ] unit-test +[ f ] [ "meet" cvc? ] unit-test + +[ "caress" ] [ "caresses" step1a step1b "" like ] unit-test +[ "poni" ] [ "ponies" step1a step1b "" like ] unit-test +[ "ti" ] [ "ties" step1a step1b "" like ] unit-test +[ "caress" ] [ "caress" step1a step1b "" like ] unit-test +[ "cat" ] [ "cats" step1a step1b "" like ] unit-test +[ "feed" ] [ "feed" step1a step1b "" like ] unit-test +[ "agree" ] [ "agreed" step1a step1b "" like ] unit-test +[ "disable" ] [ "disabled" step1a step1b "" like ] unit-test +[ "mat" ] [ "matting" step1a step1b "" like ] unit-test +[ "mate" ] [ "mating" step1a step1b "" like ] unit-test +[ "meet" ] [ "meeting" step1a step1b "" like ] unit-test +[ "mill" ] [ "milling" step1a step1b "" like ] unit-test +[ "mess" ] [ "messing" step1a step1b "" like ] unit-test +[ "meet" ] [ "meetings" step1a step1b "" like ] unit-test + +[ "fishi" ] [ "fishy" step1c ] unit-test +[ "by" ] [ "by" step1c ] unit-test + +[ "realizat" ] [ "realization" step4 ] unit-test +[ "ion" ] [ "ion" step4 ] unit-test +[ "able" ] [ "able" step4 ] unit-test + +[ "fear" ] [ "feare" step5 "" like ] unit-test +[ "mate" ] [ "mate" step5 "" like ] unit-test +[ "hell" ] [ "hell" step5 "" like ] unit-test +[ "mate" ] [ "mate" step5 "" like ] unit-test + +[ { } ] [ + "resource:basis/porter-stemmer/test/voc.txt" utf8 file-lines + [ stem ] map + "resource:basis/porter-stemmer/test/output.txt" utf8 file-lines + [ 2array ] 2map [ first2 = not ] filter +] unit-test diff --git a/basis/porter-stemmer/porter-stemmer.factor b/basis/porter-stemmer/porter-stemmer.factor new file mode 100644 index 0000000000..b6eb0ff464 --- /dev/null +++ b/basis/porter-stemmer/porter-stemmer.factor @@ -0,0 +1,219 @@ +IN: porter-stemmer +USING: kernel math parser sequences combinators splitting ; + +: consonant? ( i str -- ? ) + 2dup nth dup "aeiou" member? [ + 3drop f + ] [ + CHAR: y = [ + over zero? + [ 2drop t ] [ [ 1- ] dip consonant? not ] if + ] [ + 2drop t + ] if + ] if ; + +: skip-vowels ( i str -- i str ) + 2dup bounds-check? [ + 2dup consonant? [ [ 1+ ] dip skip-vowels ] unless + ] when ; + +: skip-consonants ( i str -- i str ) + 2dup bounds-check? [ + 2dup consonant? [ [ 1+ ] dip skip-consonants ] when + ] when ; + +: (consonant-seq) ( n i str -- n ) + skip-vowels + 2dup bounds-check? [ + [ 1+ ] [ 1+ ] [ ] tri* skip-consonants [ 1+ ] dip + (consonant-seq) + ] [ + 2drop + ] if ; + +: consonant-seq ( str -- n ) + 0 0 rot skip-consonants (consonant-seq) ; + +: stem-vowel? ( str -- ? ) + [ length ] keep [ consonant? ] curry all? not ; + +: double-consonant? ( i str -- ? ) + over 1 < [ + 2drop f + ] [ + 2dup nth [ over 1- over nth ] dip = [ + consonant? + ] [ + 2drop f + ] if + ] if ; + +: consonant-end? ( n seq -- ? ) + [ length swap - ] keep consonant? ; + +: last-is? ( str possibilities -- ? ) [ peek ] dip member? ; + +: cvc? ( str -- ? ) + { + { [ dup length 3 < ] [ drop f ] } + { [ 1 over consonant-end? not ] [ drop f ] } + { [ 2 over consonant-end? ] [ drop f ] } + { [ 3 over consonant-end? not ] [ drop f ] } + [ "wxy" last-is? not ] + } cond ; + +: r ( str oldsuffix newsuffix -- str ) + pick consonant-seq 0 > [ nip ] [ drop ] if append ; + +: step1a ( str -- newstr ) + dup peek CHAR: s = [ + { + { [ "sses" ?tail ] [ "ss" append ] } + { [ "ies" ?tail ] [ "i" append ] } + { [ dup "ss" tail? ] [ ] } + { [ "s" ?tail ] [ ] } + [ ] + } cond + ] when ; + +: -eed ( str -- str ) + dup consonant-seq 0 > "ee" "eed" ? append ; + +: -ed ( str -- str ? ) + dup stem-vowel? [ [ "ed" append ] unless ] keep ; + +: -ing ( str -- str ? ) + dup stem-vowel? [ [ "ing" append ] unless ] keep ; + +: -ed/ing ( str -- str ) + { + { [ "at" ?tail ] [ "ate" append ] } + { [ "bl" ?tail ] [ "ble" append ] } + { [ "iz" ?tail ] [ "ize" append ] } + { + [ dup length 1- over double-consonant? ] + [ dup "lsz" last-is? [ but-last-slice ] unless ] + } + { + [ t ] + [ + dup consonant-seq 1 = over cvc? and + [ "e" append ] when + ] + } + } cond ; + +: step1b ( str -- newstr ) + { + { [ "eed" ?tail ] [ -eed ] } + { + [ + { + { [ "ed" ?tail ] [ -ed ] } + { [ "ing" ?tail ] [ -ing ] } + [ f ] + } cond + ] [ -ed/ing ] + } + [ ] + } cond ; + +: step1c ( str -- newstr ) + dup but-last-slice stem-vowel? [ + "y" ?tail [ "i" append ] when + ] when ; + +: step2 ( str -- newstr ) + { + { [ "ational" ?tail ] [ "ational" "ate" r ] } + { [ "tional" ?tail ] [ "tional" "tion" r ] } + { [ "enci" ?tail ] [ "enci" "ence" r ] } + { [ "anci" ?tail ] [ "anci" "ance" r ] } + { [ "izer" ?tail ] [ "izer" "ize" r ] } + { [ "bli" ?tail ] [ "bli" "ble" r ] } + { [ "alli" ?tail ] [ "alli" "al" r ] } + { [ "entli" ?tail ] [ "entli" "ent" r ] } + { [ "eli" ?tail ] [ "eli" "e" r ] } + { [ "ousli" ?tail ] [ "ousli" "ous" r ] } + { [ "ization" ?tail ] [ "ization" "ize" r ] } + { [ "ation" ?tail ] [ "ation" "ate" r ] } + { [ "ator" ?tail ] [ "ator" "ate" r ] } + { [ "alism" ?tail ] [ "alism" "al" r ] } + { [ "iveness" ?tail ] [ "iveness" "ive" r ] } + { [ "fulness" ?tail ] [ "fulness" "ful" r ] } + { [ "ousness" ?tail ] [ "ousness" "ous" r ] } + { [ "aliti" ?tail ] [ "aliti" "al" r ] } + { [ "iviti" ?tail ] [ "iviti" "ive" r ] } + { [ "biliti" ?tail ] [ "biliti" "ble" r ] } + { [ "logi" ?tail ] [ "logi" "log" r ] } + [ ] + } cond ; + +: step3 ( str -- newstr ) + { + { [ "icate" ?tail ] [ "icate" "ic" r ] } + { [ "ative" ?tail ] [ "ative" "" r ] } + { [ "alize" ?tail ] [ "alize" "al" r ] } + { [ "iciti" ?tail ] [ "iciti" "ic" r ] } + { [ "ical" ?tail ] [ "ical" "ic" r ] } + { [ "ful" ?tail ] [ "ful" "" r ] } + { [ "ness" ?tail ] [ "ness" "" r ] } + [ ] + } cond ; + +: -ion ( str -- newstr ) + [ + "ion" + ] [ + dup "st" last-is? [ "ion" append ] unless + ] if-empty ; + +: step4 ( str -- newstr ) + dup { + { [ "al" ?tail ] [ ] } + { [ "ance" ?tail ] [ ] } + { [ "ence" ?tail ] [ ] } + { [ "er" ?tail ] [ ] } + { [ "ic" ?tail ] [ ] } + { [ "able" ?tail ] [ ] } + { [ "ible" ?tail ] [ ] } + { [ "ant" ?tail ] [ ] } + { [ "ement" ?tail ] [ ] } + { [ "ment" ?tail ] [ ] } + { [ "ent" ?tail ] [ ] } + { [ "ion" ?tail ] [ -ion ] } + { [ "ou" ?tail ] [ ] } + { [ "ism" ?tail ] [ ] } + { [ "ate" ?tail ] [ ] } + { [ "iti" ?tail ] [ ] } + { [ "ous" ?tail ] [ ] } + { [ "ive" ?tail ] [ ] } + { [ "ize" ?tail ] [ ] } + [ ] + } cond dup consonant-seq 1 > [ nip ] [ drop ] if ; + +: remove-e? ( str -- ? ) + dup consonant-seq dup 1 > + [ 2drop t ] + [ 1 = [ but-last-slice cvc? not ] [ drop f ] if ] if ; + +: remove-e ( str -- newstr ) + dup peek CHAR: e = [ + dup remove-e? [ but-last-slice ] when + ] when ; + +: ll->l ( str -- newstr ) + { + { [ dup peek CHAR: l = not ] [ ] } + { [ dup length 1- over double-consonant? not ] [ ] } + { [ dup consonant-seq 1 > ] [ but-last-slice ] } + [ ] + } cond ; + +: step5 ( str -- newstr ) remove-e ll->l ; + +: stem ( str -- newstr ) + dup length 2 <= [ + step1a step1b step1c step2 step3 step4 step5 "" like + ] unless ; diff --git a/basis/porter-stemmer/summary.txt b/basis/porter-stemmer/summary.txt new file mode 100644 index 0000000000..dd7746bcee --- /dev/null +++ b/basis/porter-stemmer/summary.txt @@ -0,0 +1 @@ +Porter stemming algorithm diff --git a/basis/porter-stemmer/test/output.txt b/basis/porter-stemmer/test/output.txt new file mode 100644 index 0000000000..595cb676c3 --- /dev/null +++ b/basis/porter-stemmer/test/output.txt @@ -0,0 +1,23531 @@ +a +aaron +abaissiez +abandon +abandon +abas +abash +abat +abat +abat +abat +abat +abbess +abbei +abbei +abbomin +abbot +abbot +abbrevi +ab +abel +aberga +abergavenni +abet +abet +abhomin +abhor +abhorr +abhor +abhor +abhor +abhorson +abid +abid +abil +abil +abject +abjectli +abject +abjur +abjur +abl +abler +aboard +abod +abod +abod +abod +abomin +abomin +abomin +abort +abort +abound +abound +about +abov +abr +abraham +abram +abreast +abridg +abridg +abridg +abridg +abroach +abroad +abrog +abrook +abrupt +abrupt +abruptli +absenc +absent +absei +absolut +absolut +absolv +absolv +abstain +abstemi +abstin +abstract +absurd +absyrtu +abund +abund +abundantli +abu +abus +abus +abus +abus +abus +abut +abi +abysm +ac +academ +academ +accent +accent +accept +accept +accept +accept +accept +access +accessari +access +accid +accid +accident +accident +accid +accit +accit +accit +acclam +accommod +accommod +accommod +accommod +accommodo +accompani +accompani +accompani +accomplic +accomplish +accomplish +accomplish +accomplish +accompt +accord +accord +accord +accordeth +accord +accordingli +accord +accost +accost +account +account +account +account +accoutr +accoutr +accoutr +accru +accumul +accumul +accumul +accur +accurs +accurst +accu +accus +accus +accus +accusativo +accus +accus +accus +accus +accus +accuseth +accus +accustom +accustom +ac +acerb +ach +acheron +ach +achiev +achiev +achiev +achiev +achiev +achiev +achiev +achiev +achil +ach +achitophel +acknowledg +acknowledg +acknowledg +acknowledg +acknown +acold +aconitum +acordo +acorn +acquaint +acquaint +acquaint +acquaint +acquir +acquir +acquisit +acquit +acquitt +acquitt +acquit +acr +acr +across +act +actaeon +act +act +action +action +actium +activ +activ +activ +actor +actor +act +actual +actur +acut +acut +ad +adag +adalla +adam +adam +add +ad +adder +adder +addeth +addict +addict +addict +ad +addit +addit +addl +address +address +addrest +add +adher +adher +adieu +adieu +adjac +adjoin +adjoin +adjourn +adjudg +adjudg +adjunct +administ +administr +admir +admir +admir +admir +admir +admir +admir +admir +admiringli +admiss +admit +admit +admitt +admit +admit +admonish +admonish +admonish +admonish +admonit +ado +adoni +adopt +adopt +adoptedli +adopt +adopti +adopt +ador +ador +ador +ador +ador +ador +adorest +adoreth +ador +adorn +adorn +adorn +adorn +adorn +adown +adramadio +adrian +adriana +adriano +adriat +adsum +adul +adulter +adulter +adulter +adulteress +adulteri +adulter +adulteri +adultress +advanc +advanc +advanc +advanc +advanc +advanc +advanc +advantag +advantag +advantag +advantag +advantag +advantag +advent +adventur +adventur +adventur +adventur +adventur +adventur +adversari +adversari +advers +advers +advers +advers +adverti +advertis +advertis +advertis +advertis +advic +advi +advis +advis +advisedli +advis +advis +advoc +advoc +aeacida +aeacid +aedil +aedil +aegeon +aegion +aegl +aemelia +aemilia +aemiliu +aenea +aeolu +aer +aerial +aeri +aesculapiu +aeson +aesop +aetna +afar +afear +afeard +affabl +affabl +affair +affair +affair +affect +affect +affect +affect +affectedli +affecteth +affect +affect +affection +affection +affect +affect +affeer +affianc +affianc +affianc +affi +affin +affin +affin +affirm +affirm +affirm +afflict +afflict +afflict +afflict +afflict +afford +affordeth +afford +affrai +affright +affright +affright +affront +affront +affi +afield +afir +afloat +afoot +afor +aforehand +aforesaid +afraid +afresh +afric +africa +african +afront +after +afternoon +afterward +afterward +ag +again +against +agamemmon +agamemnon +agat +agaz +ag +ag +agenor +agent +agent +ag +aggrav +aggrief +agil +agincourt +agit +aglet +agniz +ago +agon +agoni +agre +agre +agre +agreement +agre +agrippa +aground +agu +aguecheek +agu +aguefac +agu +ah +aha +ahungri +ai +aialvolio +aiaria +aid +aidanc +aidant +aid +aid +aidless +aid +ail +aim +aim +aimest +aim +aim +ainsi +aio +air +air +airless +air +airi +ajax +akil +al +alabast +alack +alacr +alarbu +alarm +alarm +alarum +alarum +ala +alb +alban +alban +albani +albeit +albion +alchemist +alchemi +alcibiad +alcid +alder +alderman +aldermen +al +alecto +alehous +alehous +alencon +alengon +aleppo +al +alewif +alexand +alexand +alexandria +alexandrian +alexa +alia +alic +alien +aliena +alight +alight +alight +alii +alik +alisand +aliv +all +alla +allai +allai +allai +allay +allay +allai +alleg +alleg +alleg +alleg +allegi +allegi +allei +allei +allhallowma +allianc +allicholi +alli +alli +allig +allig +allon +allot +allot +allot +allotteri +allow +allow +allow +allow +allow +allur +allur +allur +allur +allus +alli +allycholli +almain +almanac +almanack +almanac +almighti +almond +almost +alm +almsman +alo +aloft +alon +along +alonso +aloof +aloud +alphabet +alphabet +alphonso +alp +alreadi +also +alt +altar +altar +alter +alter +alter +alter +althaea +although +altitud +altogeth +alton +alwai +alwai +am +amaimon +amain +amak +amamon +amaz +amaz +amaz +amazedli +amazed +amaz +amaz +amazeth +amaz +amazon +amazonian +amazon +ambassador +ambassador +amber +ambiguid +ambigu +ambigu +ambit +ambit +ambiti +ambiti +ambl +ambl +ambl +ambl +ambo +ambuscado +ambush +amen +amend +amend +amend +amend +amerc +america +am +amiabl +amid +amidst +amien +ami +amiss +amiti +amiti +amnipot +among +amongst +amor +amor +amort +amount +amount +amour +amphimacu +ampl +ampler +amplest +amplifi +amplifi +ampli +ampthil +amurath +amynta +an +anatomiz +anatom +anatomi +ancestor +ancestor +ancestri +anchis +anchor +anchorag +anchor +anchor +anchor +anchovi +ancient +ancientri +ancient +ancu +and +andiron +andpholu +andren +andrew +andromach +andronici +andronicu +anew +ang +angel +angelica +angel +angelo +angel +anger +angerli +anger +ang +angier +angl +anglai +angl +angler +angleterr +anglia +angl +anglish +angrili +angri +anguish +angu +anim +anim +animi +anjou +ankl +anna +annal +ann +annex +annex +annexion +annex +annothan +announc +annoi +annoy +annoi +annual +anoint +anoint +anon +anoth +anselmo +answer +answer +answer +answerest +answer +answer +ant +ant +antenor +antenorid +anteroom +anthem +anthem +anthoni +anthropophagi +anthropophaginian +antiat +antic +anticip +anticip +anticipatest +anticip +anticip +antick +anticli +antic +antidot +antidot +antigonu +antiopa +antipathi +antipholu +antipholus +antipod +antiquari +antiqu +antiqu +antium +antoniad +antonio +antoniu +antoni +antr +anvil +ani +anybodi +anyon +anyth +anywher +ap +apac +apart +apart +apart +ap +apemantu +apennin +ap +apiec +apish +apollinem +apollo +apollodoru +apolog +apoplex +apoplexi +apostl +apostl +apostropha +apoth +apothecari +appal +appal +appal +appal +apparel +apparel +apparel +appar +appar +apparit +apparit +appeach +appeal +appeal +appear +appear +appear +appeareth +appear +appear +appea +appeas +appeas +appel +appel +appele +appel +appelez +appel +appel +appelon +appendix +apperil +appertain +appertain +appertain +appertain +appertin +appertin +appetit +appetit +applaud +applaud +applaud +applaus +applaus +appl +appl +appletart +applianc +applianc +applic +appli +appli +appli +appli +appoint +appoint +appoint +appoint +appoint +apprehend +apprehend +apprehend +apprehens +apprehens +apprehens +apprendr +apprenn +apprenticehood +appri +approach +approach +approach +approacheth +approach +approb +approof +appropri +approv +approv +approv +approv +approv +appurten +appurten +apricock +april +apron +apron +apt +apter +aptest +aptli +apt +aqua +aquilon +aquitain +arabia +arabian +arais +arbitr +arbitr +arbitr +arbitr +arbor +arbour +arc +arch +archbishop +archbishopr +archdeacon +arch +archelau +archer +archer +archeri +archibald +archidamu +architect +arcu +ard +arden +ardent +ardour +ar +argal +argier +argo +argosi +argosi +argu +argu +argu +argu +argu +argument +argument +argu +ariachn +ariadn +ariel +ari +aright +arinado +arini +arion +aris +aris +ariseth +aris +aristod +aristotl +arithmet +arithmetician +ark +arm +arma +armado +armado +armagnac +arm +arm +armenia +armi +armigero +arm +armipot +armor +armour +armour +armour +armour +armouri +arm +armi +arn +aroint +aros +arous +arous +arragon +arraign +arraign +arraign +arraign +arrant +arra +arrai +arrearag +arrest +arrest +arrest +arriv +arriv +arriv +arriv +arriv +arriv +arriv +arrog +arrog +arrog +arrow +arrow +art +artemidoru +arteri +arthur +articl +articl +articul +artific +artifici +artilleri +artir +artist +artist +artless +artoi +art +artu +arviragu +as +asaph +ascaniu +ascend +ascend +ascendeth +ascend +ascens +ascent +ascrib +ascrib +ash +asham +asham +asher +ash +ashford +ashor +ashout +ashi +asia +asid +ask +askanc +ask +asker +asketh +ask +ask +aslant +asleep +asmath +asp +aspect +aspect +aspen +aspers +aspic +aspici +aspic +aspir +aspir +aspir +aspir +asquint +ass +assail +assail +assail +assail +assail +assaileth +assail +assail +assassin +assault +assault +assault +assai +assai +assai +assembl +assembl +assembl +assembl +assembl +assent +ass +assez +assign +assign +assign +assinico +assist +assist +assist +assist +assist +assist +assist +associ +associ +associ +assuag +assubjug +assum +assum +assum +assumpt +assur +assur +assur +assur +assuredli +assur +assyrian +astonish +astonish +astraea +astrai +astrea +astronom +astronom +astronom +astronomi +asund +at +atalanta +at +at +athenian +athenian +athen +athol +athversari +athwart +atla +atomi +atomi +aton +aton +aton +atropo +attach +attach +attach +attain +attaind +attain +attaint +attaint +attaintur +attempt +attempt +attempt +attempt +attempt +attend +attend +attend +attend +attend +attend +attendeth +attend +attend +attent +attent +attent +attentiven +attest +attest +attir +attir +attir +attir +attornei +attornei +attornei +attorneyship +attract +attract +attract +attract +attribut +attribut +attribut +attribut +attribut +atwain +au +aubrei +auburn +aucun +audaci +audaci +audac +audibl +audienc +audi +audit +auditor +auditor +auditori +audr +audrei +aufidiu +aufidius +auger +aught +augment +augment +augment +augment +augur +augur +augur +augur +augur +auguri +august +augustu +auld +aumerl +aunchient +aunt +aunt +auricular +aurora +auspici +aussi +auster +auster +auster +auster +austria +aut +authent +author +author +author +author +author +author +autolycu +autr +autumn +auvergn +avail +avail +avaric +avarici +avaunt +av +aveng +aveng +aveng +aver +avert +av +avez +avi +avoid +avoid +avoid +avoid +avoirdupoi +avouch +avouch +avouch +avouch +avow +aw +await +await +awak +awak +awak +awaken +awaken +awaken +awak +awak +award +award +awasi +awai +aw +aweari +aweless +aw +awhil +awkward +awl +awoo +awork +awri +ax +axl +axletre +ay +ay +ayez +ayli +azur +azur +b +ba +baa +babbl +babbl +babbl +babe +babe +babi +baboon +baboon +babi +babylon +bacar +bacchan +bacchu +bach +bachelor +bachelor +back +backbit +backbitten +back +back +backward +backwardli +backward +bacon +bacon +bad +bade +badg +badg +badg +badli +bad +bae +baffl +baffl +baffl +bag +baggag +bagot +bagpip +bag +bail +bailiff +baillez +baili +baisant +baise +baiser +bait +bait +bait +bait +bait +bajazet +bak +bake +bake +baker +baker +bake +bake +bal +balanc +balanc +balconi +bald +baldrick +bale +bale +balk +ball +ballad +ballad +ballast +ballast +ballet +ballow +ball +balm +balm +balmi +balsam +balsamum +balth +balthasar +balthazar +bame +ban +banburi +band +bandi +band +bandit +banditti +banditto +band +bandi +bandi +bane +bane +bang +bangor +banish +banish +banish +banish +banist +bank +bankrout +bankrupt +bankrupt +bank +banner +banneret +banner +ban +bann +banquet +banquet +banquet +banquet +banquo +ban +baptism +baptista +baptiz +bar +barbarian +barbarian +barbar +barbar +barbari +barbason +barb +barber +barbermong +bard +bardolph +bard +bare +bare +barefac +barefac +barefoot +barehead +bare +bare +bar +bargain +bargain +barg +bargulu +bare +bark +bark +barkloughli +bark +barki +barlei +barm +barn +barnacl +barnardin +barn +barn +barnet +barn +baron +baron +baroni +barr +barraba +barrel +barrel +barren +barrenli +barren +barricado +barricado +barrow +bar +barson +barter +bartholomew +ba +basan +base +baseless +base +base +baser +base +basest +bash +bash +basilisco +basilisk +basilisk +basimecu +basin +basingstok +basin +basi +bask +basket +basket +bass +bassanio +basset +bassianu +basta +bastard +bastard +bastardli +bastard +bastardi +bast +bast +bastinado +bast +bat +batail +batch +bate +bate +bate +bath +bath +bath +bath +bath +bate +batler +bat +batt +battalia +battalion +batten +batter +batter +batter +batteri +battl +battl +battlefield +battlement +battl +batti +baubl +baubl +baubl +baulk +bavin +bawcock +bawd +bawdri +bawd +bawdi +bawl +bawl +bai +bai +baynard +bayonn +bai +be +beach +beach +beachi +beacon +bead +bead +beadl +beadl +bead +beadsmen +beagl +beagl +beak +beak +beam +beam +beam +bean +bean +bear +beard +beard +beardless +beard +bearer +bearer +bearest +beareth +bear +bear +beast +beastliest +beastli +beastli +beast +beat +beat +beaten +beat +beatric +beat +beau +beaufort +beaumond +beaumont +beauteou +beauti +beauti +beautifi +beauti +beautifi +beauti +beaver +beaver +becam +becaus +bechanc +bechanc +bechanc +beck +beckon +beckon +beck +becom +becom +becom +becom +becom +becom +bed +bedabbl +bedash +bedaub +bedazzl +bedchamb +bedcloth +bed +bedeck +bedeck +bedew +bedfellow +bedfellow +bedford +bedlam +bedrench +bedrid +bed +bedtim +bedward +bee +beef +beef +beehiv +been +beer +bee +beest +beetl +beetl +beev +befal +befallen +befal +befel +befit +befit +befit +befor +befor +beforehand +befortun +befriend +befriend +befriend +beg +began +beget +beget +beget +begg +beggar +beggar +beggarli +beggarman +beggar +beggari +beg +begin +beginn +begin +begin +begin +begnawn +begon +begot +begotten +begrim +beg +beguil +beguil +beguil +beguil +beguil +begun +behalf +behalf +behav +behav +behavedst +behavior +behavior +behaviour +behaviour +behead +behead +beheld +behest +behest +behind +behold +behold +behold +beholdest +behold +behold +behoof +behoofful +behoov +behov +behov +behowl +be +bel +belariu +belch +belch +beldam +beldam +beldam +bele +belgia +beli +beli +belief +beliest +believ +believ +believ +believ +believest +believ +belik +bell +bellario +bell +belli +belli +bellman +bellona +bellow +bellow +bellow +bellow +bell +belli +belly +belman +belmont +belock +belong +belong +belong +belong +belov +belov +belov +below +belt +belzebub +bemad +bemet +bemet +bemoan +bemoan +bemock +bemoil +bemonst +ben +bench +bencher +bench +bend +bend +bend +bend +bene +beneath +benedicit +benedick +benedict +benedictu +benefactor +benefic +benefici +benefit +benefit +benefit +benet +benevol +benevol +beni +benison +bennet +bent +bentii +bentivolii +bent +benumb +benvolio +bepaint +beprai +bequeath +bequeath +bequeath +bequest +ber +berard +berattl +berai +bere +bereav +bereav +bereav +bereft +bergamo +bergomask +berhym +berhym +berkelei +bermooth +bernardo +berod +berown +berri +berri +berrord +berri +bertram +berwick +bescreen +beseech +beseech +beseech +beseech +beseek +beseem +beseemeth +beseem +beseem +beset +beshrew +besid +besid +besieg +besieg +besieg +beslubb +besmear +besmear +besmirch +besom +besort +besot +bespak +bespeak +bespic +bespok +bespot +bess +bessi +best +bestain +best +bestial +bestir +bestirr +bestow +bestow +bestow +bestow +bestraught +bestrew +bestrid +bestrid +bestrid +bet +betak +beteem +bethink +bethought +bethroth +bethump +betid +betid +betideth +betim +betim +betoken +betook +betoss +betrai +betrai +betrai +betrai +betrim +betroth +betroth +betroth +bett +bet +better +better +better +better +bet +bettr +between +betwixt +bevel +beverag +bevi +bevi +bewail +bewail +bewail +bewail +bewar +bewast +beweep +bewept +bewet +bewhor +bewitch +bewitch +bewitch +bewrai +beyond +bezonian +bezonian +bianca +bianco +bia +bibbl +bicker +bid +bidden +bid +bid +biddi +bide +bide +bide +bid +bien +bier +bifold +big +bigami +biggen +bigger +big +bigot +bilberri +bilbo +bilbo +bilbow +bill +billet +billet +billiard +bill +billow +billow +bill +bin +bind +bindeth +bind +bind +biondello +birch +bird +bird +birdlim +bird +birnam +birth +birthdai +birthdom +birthplac +birthright +birthright +birth +bi +biscuit +bishop +bishop +bisson +bit +bitch +bite +biter +bite +bite +bit +bitt +bitten +bitter +bitterest +bitterli +bitter +blab +blabb +blab +blab +black +blackamoor +blackamoor +blackberri +blackberri +blacker +blackest +blackfriar +blackheath +blackmer +black +black +bladder +bladder +blade +blade +blade +blain +blam +blame +blame +blame +blameless +blame +blanc +blanca +blanch +blank +blanket +blank +blasphem +blasphem +blasphem +blasphemi +blast +blast +blast +blastment +blast +blaz +blaze +blaze +blaze +blazon +blazon +blazon +bleach +bleach +bleak +blear +blear +bleat +bleat +bleat +bled +bleed +bleedest +bleedeth +bleed +bleed +blemish +blemish +blench +blench +blend +blend +blent +bless +bless +blessedli +blessed +bless +blesseth +bless +bless +blest +blew +blind +blind +blindfold +blind +blindli +blind +blind +blink +blink +bliss +blist +blister +blister +blith +blithild +bloat +block +blockish +block +bloi +blood +blood +bloodhound +bloodi +bloodier +bloodiest +bloodili +bloodless +blood +bloodsh +bloodshed +bloodstain +bloodi +bloom +bloom +blossom +blossom +blossom +blot +blot +blot +blot +blount +blow +blow +blower +blowest +blow +blown +blow +blows +blubb +blubber +blubber +blue +bluecap +bluest +blunt +blunt +blunter +bluntest +blunt +bluntli +blunt +blunt +blur +blurr +blur +blush +blush +blushest +blush +blust +bluster +bluster +bluster +bo +boar +board +board +board +board +boarish +boar +boast +boast +boast +boast +boast +boat +boat +boatswain +bob +bobb +boblibindo +bobtail +bocchu +bode +bode +bodement +bode +bodg +bodi +bodi +bodiless +bodili +bode +bodkin +bodi +bodykin +bog +boggl +boggler +bog +bohemia +bohemian +bohun +boil +boil +boil +boist +boister +boister +boitier +bold +bolden +bolder +boldest +boldli +bold +bold +bolingbrok +bolster +bolt +bolt +bolter +bolter +bolt +bolt +bombard +bombard +bombast +bon +bona +bond +bondag +bond +bondmaid +bondman +bondmen +bond +bondslav +bone +boneless +bone +bonfir +bonfir +bonjour +bonn +bonnet +bonnet +bonni +bono +bonto +bonvil +bood +book +bookish +book +boon +boor +boorish +boor +boot +boot +booti +bootless +boot +booti +bor +bora +borachio +bordeaux +border +border +border +border +bore +borea +bore +bore +born +born +borough +borough +borrow +borrow +borrow +borrow +borrow +bosko +bosko +boski +bosom +bosom +boson +boss +bosworth +botch +botcher +botch +botchi +both +bot +bottl +bottl +bottl +bottom +bottomless +bottom +bouciqualt +boug +bough +bough +bought +bounc +bounc +bound +bound +bounden +boundeth +bound +boundless +bound +bounteou +bounteous +bounti +bounti +bountifulli +bounti +bourbier +bourbon +bourchier +bourdeaux +bourn +bout +bout +bove +bow +bowcas +bow +bowel +bower +bow +bowl +bowler +bowl +bowl +bow +bowsprit +bowstr +box +box +boi +boyet +boyish +boi +brabant +brabantio +brabbl +brabbler +brac +brace +bracelet +bracelet +brach +braci +brag +bragg +braggard +braggard +braggart +braggart +brag +brag +bragless +brag +braid +braid +brain +brain +brainford +brainish +brainless +brain +brainsick +brainsickli +brake +brakenburi +brake +brambl +bran +branch +branch +branchless +brand +brand +brandish +brandon +brand +bra +brass +brassi +brat +brat +brav +brave +brave +brave +braver +braveri +brave +bravest +brave +brawl +brawler +brawl +brawl +brawn +brawn +brai +brai +braz +brazen +brazier +breach +breach +bread +breadth +break +breaker +breakfast +break +break +breast +breast +breast +breastplat +breast +breath +breath +breath +breather +breather +breath +breathest +breath +breathless +breath +brecknock +bred +breech +breech +breech +breed +breeder +breeder +breed +breed +brees +breez +breff +bretagn +brethen +bretheren +brethren +brevi +breviti +brew +brewag +brewer +brewer +brew +brew +briareu +briar +brib +bribe +briber +bribe +brick +bricklay +brick +bridal +bride +bridegroom +bridegroom +bride +bridg +bridgenorth +bridg +bridget +bridl +bridl +brief +briefer +briefest +briefli +brief +brier +brier +brigandin +bright +brighten +brightest +brightli +bright +brim +brim +brim +brimston +brind +brine +bring +bringer +bringeth +bring +bring +bring +brinish +brink +brisk +briski +bristl +bristl +bristli +bristol +bristow +britain +britain +britain +british +briton +briton +brittani +brittl +broach +broach +broad +broader +broadsid +broca +brock +brogu +broil +broil +broil +broke +broken +brokenli +broker +broker +broke +broke +brooch +brooch +brood +brood +brood +brook +brook +broom +broomstaff +broth +brothel +brother +brotherhood +brotherhood +brotherli +brother +broth +brought +brow +brown +browner +brownist +browni +brow +brows +brows +brui +bruis +bruis +bruis +bruis +bruit +bruit +brundusium +brunt +brush +brush +brute +brutish +brutu +bubbl +bubbl +bubbl +bubukl +buck +bucket +bucket +buck +buckingham +buckl +buckl +buckler +buckler +bucklersburi +buckl +buckram +buck +bud +bud +bud +budg +budger +budget +bud +buff +buffet +buffet +buffet +bug +bugbear +bugl +bug +build +build +buildeth +build +build +build +built +bulk +bulk +bull +bullcalf +bullen +bullen +bullet +bullet +bullock +bull +bulli +bulmer +bulwark +bulwark +bum +bumbast +bump +bumper +bum +bunch +bunch +bundl +bung +bunghol +bungl +bunt +buoi +bur +burbolt +burd +burden +burden +burden +burden +burden +burgh +burgher +burgher +burglari +burgomast +burgonet +burgundi +burial +buri +burier +buriest +burli +burn +burn +burnet +burneth +burn +burnish +burn +burnt +burr +burrow +bur +burst +burst +burst +burthen +burthen +burton +buri +buri +bush +bushel +bush +bushi +busi +busili +busin +busi +busi +buskin +buski +buss +buss +buss +bustl +bustl +busi +but +butche +butcher +butcher +butcheri +butcherli +butcher +butcheri +butler +butt +butter +butter +butterfli +butterfli +butterwoman +butteri +buttock +buttock +button +buttonhol +button +buttress +buttri +butt +buxom +bui +buyer +bui +bui +buzz +buzzard +buzzard +buzzer +buzz +by +bye +byzantium +c +ca +cabbag +cabilero +cabin +cabin +cabl +cabl +cackl +cacodemon +caddi +caddiss +cade +cadenc +cadent +cade +cadmu +caduceu +cadwal +cadwallad +caeliu +caelo +caesar +caesarion +caesar +cage +cage +cagion +cain +caith +caitiff +caitiff +caiu +cak +cake +cake +calab +calai +calam +calam +calcha +calcul +calen +calendar +calendar +calf +caliban +caliban +calipoli +caliti +caliv +call +callat +call +callet +call +call +calm +calmest +calmli +calm +calm +calpurnia +calumni +calumni +calumni +calumni +calv +calv +calv +calveskin +calydon +cam +cambio +cambria +cambric +cambric +cambridg +cambys +came +camel +camelot +camel +camest +camillo +camlet +camomil +camp +campeiu +camp +camp +can +canakin +canari +canari +cancel +cancel +cancel +cancel +cancel +cancer +candidatu +candi +candl +candl +candlestick +candi +canidiu +cank +canker +cankerblossom +canker +cannib +cannib +cannon +cannon +cannon +cannot +canon +canoniz +canon +canon +canon +canopi +canopi +canopi +canst +canstick +canterburi +cantl +canton +canu +canva +canvass +canzonet +cap +capabl +capabl +capac +capac +caparison +capdv +cape +capel +capel +caper +caper +capet +caphi +capilet +capitain +capit +capit +capitol +capitul +capocchia +capon +capon +capp +cappadocia +capriccio +caprici +cap +capt +captain +captain +captainship +captiou +captiv +captiv +captiv +captiv +captiv +captiv +captum +capuciu +capulet +capulet +car +carack +carack +carat +carawai +carbonado +carbuncl +carbuncl +carbuncl +carcanet +carcas +carcas +carcass +carcass +card +cardecu +card +carder +cardin +cardin +cardin +cardmak +card +carduu +care +care +career +career +care +carefulli +careless +carelessli +careless +care +caret +cargo +carl +carlisl +carlot +carman +carmen +carnal +carnal +carnarvonshir +carnat +carnat +carol +carou +carous +carous +carous +carous +carp +carpent +carper +carpet +carpet +carp +carriag +carriag +carri +carrier +carrier +carri +carrion +carrion +carri +carri +car +cart +carter +carthag +cart +carv +carv +carv +carver +carv +carv +ca +casa +casaer +casca +case +casement +casement +case +cash +cashier +case +cask +casket +casket +casket +casqu +casqu +cassado +cassandra +cassibelan +cassio +cassiu +cassock +cast +castalion +castawai +castawai +cast +caster +castig +castig +castil +castiliano +cast +castl +castl +cast +casual +casual +casualti +casualti +cat +cataian +catalogu +cataplasm +cataract +catarrh +catastroph +catch +catcher +catch +catch +cate +catechis +catech +catech +cater +caterpillar +cater +caterwaul +cate +catesbi +cathedr +catlik +catl +catl +cato +cat +cattl +caucasu +caudl +cauf +caught +cauldron +cau +caus +caus +causeless +causer +caus +causest +causeth +cautel +cautel +cautel +cauter +caution +caution +cavaleiro +cavaleri +cavali +cave +cavern +cavern +cave +caveto +caviari +cavil +cavil +cawdor +cawdron +caw +ce +cea +ceas +ceas +ceaseth +cedar +cedar +cediu +celebr +celebr +celebr +celebr +celer +celesti +celia +cell +cellar +cellarag +celsa +cement +censer +censor +censorinu +censur +censur +censur +censur +censur +censur +centaur +centaur +centr +cent +centuri +centurion +centurion +centuri +cerberu +cerecloth +cerement +ceremoni +ceremoni +ceremoni +ceremoni +ceremoni +cere +cern +certain +certain +certainli +certainti +certainti +cert +certif +certifi +certifi +certifi +ce +cesario +cess +cess +cestern +cetera +cett +chace +chaf +chafe +chafe +chafe +chaff +chaffless +chafe +chain +chain +chair +chair +chalic +chalic +chalic +chalk +chalk +chalki +challeng +challeng +challeng +challeng +challeng +challeng +cham +chamber +chamber +chamberlain +chamberlain +chambermaid +chambermaid +chamber +chameleon +champ +champagn +champain +champain +champion +champion +chanc +chanc +chanc +chancellor +chanc +chandler +chang +chang +changeabl +chang +chang +changel +changel +changer +chang +changest +chang +channel +channel +chanson +chant +chanticl +chant +chantri +chantri +chant +chao +chap +chape +chapel +chapeless +chapel +chaplain +chaplain +chapless +chaplet +chapmen +chap +chapter +charact +charact +characterless +charact +characteri +charact +charbon +chare +chare +charg +charg +charg +charg +charg +chargeth +charg +chariest +chari +chare +chariot +chariot +charit +charit +chariti +chariti +charlemain +charl +charm +charm +charmer +charmeth +charmian +charm +charmingli +charm +charneco +charnel +charoloi +charon +charter +charter +chartreux +chari +charybdi +cha +chase +chase +chaser +chaseth +chase +chast +chast +chasti +chastis +chastis +chastis +chastiti +chat +chatham +chatillon +chat +chatt +chattel +chatter +chatter +chattl +chaud +chaunt +chaw +chawdron +che +cheap +cheapen +cheaper +cheapest +cheapli +cheapsid +cheat +cheat +cheater +cheater +cheat +cheat +check +check +checker +check +check +cheek +cheek +cheer +cheer +cheerer +cheer +cheerfulli +cheer +cheerless +cheerli +cheer +chees +chequer +cher +cherish +cherish +cherish +cherish +cherish +cherri +cherri +cherrypit +chertsei +cherub +cherubim +cherubin +cherubin +cheshu +chess +chest +chester +chestnut +chestnut +chest +cheta +chev +cheval +chevali +chevali +cheveril +chew +chew +chewet +chew +chez +chi +chick +chicken +chicken +chicurmurco +chid +chidden +chide +chider +chide +chide +chief +chiefest +chiefli +chien +child +child +childer +childhood +childhood +child +childish +childish +childlik +child +children +chill +chill +chime +chime +chimnei +chimneypiec +chimnei +chimurcho +chin +china +chine +chine +chink +chink +chin +chipp +chipper +chip +chiron +chirp +chirrah +chirurgeonli +chisel +chitoph +chivalr +chivalri +choic +choic +choicest +choir +choir +chok +choke +choke +choke +choke +choler +choler +choler +chollor +choos +chooser +choos +chooseth +choos +chop +chopin +choplog +chopp +chop +chop +choppi +chop +chopt +chor +chorist +choru +chose +chosen +chough +chough +chrish +christ +christen +christendom +christendom +christen +christen +christian +christianlik +christian +christma +christom +christoph +christophero +chronicl +chronicl +chronicl +chronicl +chronicl +chrysolit +chuck +chuck +chud +chuff +church +church +churchman +churchmen +churchyard +churchyard +churl +churlish +churlishli +churl +churn +chu +cicatric +cicatric +cice +cicero +cicet +ciel +ciitzen +cilicia +cimber +cimmerian +cinabl +cinctur +cinder +cine +cinna +cinqu +cipher +cipher +circa +circ +circl +circl +circlet +circl +circuit +circum +circumcis +circumfer +circummur +circumscrib +circumscrib +circumscript +circumspect +circumst +circumstanc +circumst +circumstanti +circumv +circumvent +cistern +citadel +cital +cite +cite +cite +citi +cite +citizen +citizen +cittern +citi +civet +civil +civil +civilli +clack +clad +claim +claim +claim +clamb +clamber +clammer +clamor +clamor +clamor +clamour +clamour +clang +clangor +clap +clapp +clap +clapper +clap +clap +clare +clarenc +claret +claribel +clasp +clasp +clatter +claud +claudio +claudiu +claus +claw +claw +claw +claw +clai +clai +clean +cleanliest +cleanli +clean +cleans +cleans +clear +clearer +clearest +clearli +clear +clear +cleav +cleav +clef +cleft +cleitu +clemenc +clement +cleomen +cleopatpa +cleopatra +clepeth +clept +clerestori +clergi +clergyman +clergymen +clerk +clerkli +clerk +clew +client +client +cliff +clifford +clifford +cliff +clifton +climat +climatur +climb +climb +climber +climbeth +climb +climb +clime +cling +clink +clink +clinquant +clip +clipp +clipper +clippeth +clip +clipt +clitu +clo +cloak +cloakbag +cloak +clock +clock +clod +cloddi +clodpol +clog +clog +clog +cloister +cloistress +cloquenc +clo +close +close +close +close +closer +close +closest +closet +close +closur +cloten +cloten +cloth +clothair +clothariu +cloth +cloth +clothier +clothier +cloth +cloth +clotpol +clotpol +cloud +cloud +cloudi +cloud +cloudi +clout +clout +clout +cloven +clover +clove +clovest +clowder +clown +clownish +clown +cloi +cloi +cloi +cloyless +cloyment +cloi +club +club +cluck +clung +clust +cluster +clutch +clyster +cneiu +cnemi +co +coach +coach +coachmak +coact +coactiv +coagul +coal +coal +coars +coars +coast +coast +coast +coat +coat +coat +cobbl +cobbl +cobbler +cobham +cobloaf +cobweb +cobweb +cock +cockatric +cockatric +cockl +cockl +cocknei +cockpit +cock +cocksur +coctu +cocytu +cod +cod +codl +codpiec +codpiec +cod +coelestibu +coesar +coeur +coffer +coffer +coffin +coffin +cog +cog +cogit +cogit +cognit +cogniz +cogscomb +cohabit +coher +coher +coher +coher +cohort +coif +coign +coil +coin +coinag +coiner +coin +coin +col +colbrand +colcho +cold +colder +coldest +coldli +cold +coldspur +colebrook +colic +collar +collar +collater +colleagu +collect +collect +collect +colleg +colleg +colli +collier +collier +collop +collus +colm +colmekil +coloquintida +color +color +colossu +colour +colour +colour +colour +colour +colt +colt +colt +columbin +columbin +colvil +com +comagen +comart +comb +combat +combat +combat +combat +combat +combin +combin +combin +combin +combin +combless +combust +come +comedian +comedian +comedi +comeli +come +comer +comer +come +comest +comet +cometh +comet +comfect +comfit +comfit +comfort +comfort +comfort +comfort +comfort +comfortless +comfort +comic +comic +come +come +cominiu +comma +command +command +command +command +command +command +command +command +command +comm +commenc +commenc +commenc +commenc +commenc +commenc +commend +commend +commend +commend +commend +commend +commend +comment +commentari +comment +comment +commerc +commingl +commiser +commiss +commission +commiss +commit +commit +committ +commit +commit +commix +commix +commixt +commixtur +commodi +commod +commod +common +commonalti +common +common +commonli +common +commonw +commonwealth +commot +commot +commun +communicat +commun +commun +commun +commun +comonti +compact +compani +companion +companion +companionship +compani +compar +compar +compar +compar +compar +comparison +comparison +compartn +compass +compass +compass +compass +compassion +compeer +compel +compel +compel +compel +compel +compens +compet +compet +compet +competitor +competitor +compil +compil +compil +complain +complain +complainest +complain +complain +complain +complaint +complaint +complement +complement +complet +complexion +complexion +complexion +complic +compli +compliment +compliment +compliment +complot +complot +complot +compli +compo +compos +compos +composit +compost +compostur +composur +compound +compound +compound +comprehend +comprehend +comprehend +compremis +compri +compris +compromi +compromis +compt +comptibl +comptrol +compulsatori +compuls +compuls +compuncti +comput +comrad +comrad +comutu +con +concav +concav +conceal +conceal +conceal +conceal +conceal +conceal +conceit +conceit +conceitless +conceit +conceiv +conceiv +conceiv +conceiv +conceiv +concept +concept +concepti +concern +concern +concerneth +concern +concern +concern +conclav +conclud +conclud +conclud +conclud +conclud +conclus +conclus +concolinel +concord +concubin +concupisc +concupi +concur +concur +concur +condemn +condemn +condemn +condemn +condemn +condescend +condign +condit +condition +condit +condol +condol +condol +conduc +conduct +conduct +conduct +conductor +conduit +conduit +conect +conei +confect +confectionari +confect +confederaci +confeder +confeder +confer +confer +conferr +confer +confess +confess +confess +confesseth +confess +confess +confess +confessor +confid +confid +confid +confin +confin +confin +confineless +confin +confin +confin +confirm +confirm +confirm +confirm +confirm +confirm +confirm +confirm +confirm +confisc +confisc +confisc +confix +conflict +conflict +conflict +confluenc +conflux +conform +conform +confound +confound +confound +confound +confront +confront +confu +confus +confusedli +confus +confus +confut +confut +congeal +congeal +congeal +conge +conger +congest +congi +congratul +congre +congreet +congreg +congreg +congreg +congreg +congruent +congru +coni +conjectur +conjectur +conjectur +conjoin +conjoin +conjoin +conjointli +conjunct +conjunct +conjunct +conjur +conjur +conjur +conjur +conjur +conjur +conjur +conjur +conjur +conjuro +conn +connect +conniv +conqu +conquer +conquer +conquer +conqueror +conqueror +conquer +conquest +conquest +conqur +conrad +con +consanguin +consanguin +conscienc +conscienc +conscienc +conscion +consecr +consecr +consecr +consent +consent +consent +consent +consequ +consequ +consequ +conserv +conserv +conserv +consid +consider +consider +consider +consider +consid +consid +consid +consid +consign +consign +consist +consisteth +consist +consistori +consist +consol +consol +conson +conson +consort +consort +consortest +conspectu +conspir +conspiraci +conspir +conspir +conspir +conspir +conspir +conspir +conspir +conspir +constabl +constabl +constanc +constanc +constanc +constant +constantin +constantinopl +constantli +constel +constitut +constrain +constrain +constraineth +constrain +constraint +constr +construct +constru +consul +consul +consulship +consulship +consult +consult +consult +consum +consum +consum +consum +consum +consumm +consumm +consumpt +consumpt +contagion +contagi +contain +contain +contain +contamin +contamin +contemn +contemn +contemn +contemn +contempl +contempl +contempl +contempt +contempt +contempt +contemptu +contemptu +contend +contend +contend +contendon +content +contenta +content +contenteth +content +contenti +contentless +contento +content +contest +contest +contin +contin +contin +contin +continu +continu +continu +continu +continuantli +continu +continu +continu +continu +continu +continu +contract +contract +contract +contract +contradict +contradict +contradict +contradict +contrari +contrarieti +contrarieti +contrari +contrari +contrari +contr +contribut +contributor +contrit +contriv +contriv +contriv +contriv +contriv +contriv +control +control +control +control +control +control +controversi +contumeli +contumeli +contum +contus +conveni +conveni +conveni +conveni +conveni +convent +conventicl +convent +conver +convers +convers +convers +convers +convers +convers +convers +convers +convert +convert +convertest +convert +convertit +convertit +convert +convei +convey +convey +convey +convei +convict +convict +convinc +convinc +convinc +conviv +convoc +convoi +convuls +coni +cook +cookeri +cook +cool +cool +cool +cool +coop +coop +cop +copatain +cope +cophetua +copi +copi +copiou +copper +copperspur +coppic +copul +copul +copi +cor +coragio +coral +coram +corambu +coranto +coranto +corbo +cord +cord +cordelia +cordial +cordi +cord +core +corin +corinth +corinthian +coriolanu +corioli +cork +corki +cormor +corn +cornelia +corneliu +corner +corner +cornerston +cornet +cornish +corn +cornuto +cornwal +corollari +coron +coron +coronet +coronet +corpor +corpor +corpor +corps +corpul +correct +correct +correct +correct +correction +correct +correspond +correspond +correspond +correspons +corrig +corriv +corriv +corrobor +corros +corrupt +corrupt +corrupt +corrupt +corrupt +corrupt +corrupt +corrupt +corruptli +corrupt +cors +cors +corslet +cosmo +cost +costard +costermong +costlier +costli +cost +cot +cote +cote +cotsal +cotsol +cotswold +cottag +cottag +cotu +couch +couch +couch +couch +coud +cough +cough +could +couldst +coulter +council +councillor +council +counsel +counsel +counsellor +counsellor +counselor +counselor +counsel +count +count +countenanc +counten +counten +counter +counterchang +countercheck +counterfeit +counterfeit +counterfeit +counterfeitli +counterfeit +countermand +countermand +countermin +counterpart +counterpoint +counterpoi +counterpois +counter +countervail +countess +countess +counti +count +countless +countri +countrv +countri +countryman +countrymen +count +counti +couper +coupl +coupl +couplement +coupl +couplet +couplet +cour +courag +courag +courag +courag +courier +courier +couronn +cour +cours +cours +courser +courser +cours +cours +court +court +courteou +courteous +courtesan +courtesi +courtesi +courtezan +courtezan +courtier +courtier +courtlik +courtli +courtnei +court +courtship +cousin +cousin +couterfeit +coutum +coven +coven +covent +coventri +cover +cover +cover +coverlet +cover +covert +covertli +covertur +covet +covet +covet +covet +covet +covet +covet +covet +cow +coward +coward +cowardic +cowardli +coward +cowardship +cowish +cowl +cowslip +cowslip +cox +coxcomb +coxcomb +coi +coystril +coz +cozen +cozenag +cozen +cozen +cozen +cozen +cozier +crab +crab +crab +crack +crack +cracker +cracker +crack +crack +cradl +cradl +cradl +craft +craft +crafti +craftier +craftili +craft +craftsmen +crafti +cram +cramm +cramp +cramp +cram +crank +crank +cranmer +cranni +cranni +cranni +crant +crare +crash +crassu +crav +crave +crave +craven +craven +crave +craveth +crave +crawl +crawl +crawl +craz +craze +crazi +creak +cream +creat +creat +creat +creat +creation +creator +creatur +creatur +credenc +credent +credibl +credit +creditor +creditor +credo +credul +credul +creed +creek +creek +creep +creep +creep +crept +crescent +cresciv +cresset +cressid +cressida +cressid +cressi +crest +crest +crestfal +crestless +crest +cretan +crete +crevic +crew +crew +crib +cribb +crib +cricket +cricket +cri +criedst +crier +cri +criest +crieth +crime +crime +crimeless +crime +crimin +crimson +cring +crippl +crisp +crisp +crispian +crispianu +crispin +critic +critic +critic +croak +croak +croak +crocodil +cromer +cromwel +crone +crook +crookback +crook +crook +crop +cropp +crosbi +cross +cross +cross +crossest +cross +cross +crossli +cross +crost +crotchet +crouch +crouch +crow +crowd +crowd +crowd +crowd +crowflow +crow +crowkeep +crown +crown +crowner +crownet +crownet +crown +crown +crow +crudi +cruel +cruell +crueller +cruelli +cruel +cruelti +crum +crumbl +crumb +crupper +crusado +crush +crush +crushest +crush +crust +crust +crusti +crutch +crutch +cry +cry +crystal +crystallin +crystal +cub +cubbert +cubiculo +cubit +cub +cuckold +cuckoldli +cuckold +cuckoo +cucullu +cudgel +cudgel +cudgel +cudgel +cudgel +cue +cue +cuff +cuff +cuiqu +cull +cull +cullion +cullionli +cullion +culpabl +culverin +cum +cumber +cumberland +cun +cunningli +cun +cuor +cup +cupbear +cupboard +cupid +cupid +cuppel +cup +cur +curan +curat +curb +curb +curb +curb +curd +curdi +curd +cure +cure +cureless +curer +cure +curfew +cure +curio +curios +curiou +curious +curl +curl +curl +curl +curranc +currant +current +current +currish +curri +cur +curs +curs +curs +cursi +curs +cursorari +curst +curster +curstest +curst +cursi +curtail +curtain +curtain +curtal +curti +curtl +curtsi +curtsi +curtsi +curvet +curvet +cush +cushion +cushion +custalorum +custard +custodi +custom +customari +custom +custom +custom +custom +custur +cut +cutler +cutpurs +cutpurs +cut +cutter +cut +cuttl +cxsar +cyclop +cydnu +cygnet +cygnet +cym +cymbal +cymbelin +cyme +cynic +cynthia +cypress +cypriot +cypru +cyru +cytherea +d +dabbl +dace +dad +daedalu +daemon +daff +daf +daffest +daffodil +dagger +dagger +dagonet +daili +daintier +dainti +daintiest +daintili +dainti +daintri +dainti +daisi +daisi +daisi +dale +dallianc +dalli +dalli +dalli +dalli +dalmatian +dam +damag +damascu +damask +damask +dame +dame +damm +damn +damnabl +damnabl +damnat +damn +damn +damoisel +damon +damosella +damp +dam +damsel +damson +dan +danc +danc +dancer +danc +danc +dandl +dandi +dane +dang +danger +danger +danger +danger +dangl +daniel +danish +dank +dankish +dansker +daphn +dappl +dappl +dar +dardan +dardanian +dardaniu +dare +dare +dare +dare +darest +dare +dariu +dark +darken +darken +darken +darker +darkest +darkl +darkli +dark +darl +darl +darnel +darraign +dart +dart +darter +dartford +dart +dart +dash +dash +dash +dastard +dastard +dat +datchet +date +date +dateless +date +daub +daughter +daughter +daunt +daunt +dauntless +dauphin +daventri +davi +daw +dawn +dawn +daw +dai +daylight +dai +dazzl +dazzl +dazzl +de +dead +deadli +deaf +deaf +deaf +deaf +deal +dealer +dealer +dealest +deal +deal +deal +dealt +dean +deaneri +dear +dearer +dearest +dearli +dear +dear +dearth +dearth +death +deathb +death +death +deathsman +deathsmen +debar +debas +debat +debat +debat +debateth +debat +debauch +debil +debil +debitor +debonair +deborah +debosh +debt +debt +debtor +debtor +debt +debuti +decai +decai +decay +decai +decai +decea +deceas +deceas +deceit +deceit +deceit +deceiv +deceiv +deceiv +deceiv +deceiv +deceiv +deceiv +deceivest +deceiveth +deceiv +decemb +decent +decepti +decern +decid +decid +decim +deciph +deciph +decis +deciu +deck +deck +deck +deckt +declar +declar +declens +declens +declin +declin +declin +declin +declin +decoct +decorum +decrea +decreas +decreas +decre +decre +decre +decrepit +dedic +dedic +dedic +dedic +deed +deedless +deed +deem +deem +deep +deeper +deepest +deepli +deep +deepvow +deer +deess +defac +defac +defac +defac +defac +defac +defam +default +defeat +defeat +defeat +defeatur +defect +defect +defect +defenc +defenc +defend +defend +defend +defend +defend +defend +defend +defens +defens +defens +defer +deferr +defianc +defici +defi +defi +defil +defil +defil +defil +defil +defin +defin +definit +definit +definit +deflow +deflow +deflow +deform +deform +deform +deform +deftli +defunct +defunct +defus +defi +defi +degener +degrad +degre +degre +deifi +deifi +deign +deign +deiphobu +deiti +deiti +deja +deject +deject +delabreth +delai +delai +delai +delai +delect +deliber +delic +delic +delici +delici +delight +delight +delight +delight +delinqu +deliv +deliv +deliver +deliv +deliv +deliv +deliveri +delpho +delud +delud +delug +delv +delver +delv +demand +demand +demand +demand +demean +demeanor +demeanour +demerit +demesn +demetriu +demi +demigod +demis +demoisel +demon +demonstr +demonstr +demonstr +demonstr +demonstr +demonstr +demur +demur +demur +den +denai +deni +denial +denial +deni +denier +deni +deniest +deni +denmark +denni +denni +denot +denot +denot +denounc +denounc +denounc +den +denunci +deni +deni +deo +depart +depart +departest +depart +departur +depech +depend +depend +depend +depend +depend +depend +depend +depend +depend +depend +depend +depend +deplor +deplor +depopul +depo +depos +depos +depos +depositari +deprav +deprav +deprav +deprav +deprav +depress +depriv +depriv +depth +depth +deput +deput +deput +deputi +deput +deputi +deracin +derbi +derceta +dere +derid +deris +deriv +deriv +deriv +deriv +deriv +deriv +derog +derog +derog +de +desartless +descant +descend +descend +descend +descend +descens +descent +descent +describ +describ +describ +descri +descript +descript +descri +desdemon +desdemona +desert +desert +deserv +deserv +deserv +deservedli +deserv +deserv +deserv +deservest +deserv +deserv +design +design +design +design +desir +desir +desir +desir +desir +desirest +desir +desir +desist +desk +desol +desol +desp +despair +despair +despair +despatch +desper +desper +desper +despi +despis +despis +despis +despiseth +despis +despit +despit +despoil +dest +destin +destin +destini +destini +destitut +destroi +destroi +destroy +destroy +destroi +destroi +destruct +destruct +det +detain +detain +detect +detect +detect +detect +detector +detect +detent +determin +determin +determin +determin +determin +determin +determin +detest +detest +detest +detest +detest +detract +detract +detract +deucalion +deuc +deum +deux +devant +devest +devic +devic +devil +devilish +devil +devi +devis +devis +devis +devis +devoid +devonshir +devot +devot +devot +devour +devour +devour +devour +devour +devout +devoutli +dew +dewberri +dewdrop +dewlap +dewlapp +dew +dewi +dexter +dexteri +dexter +di +diabl +diablo +diadem +dial +dialect +dialogu +dialogu +dial +diamet +diamond +diamond +dian +diana +diaper +dibbl +dic +dice +dicer +dich +dick +dicken +dickon +dicki +dictat +diction +dictynna +did +diddl +didest +dido +didst +die +di +diedst +di +diest +diet +diet +dieter +dieu +diff +differ +differ +differ +differ +differ +differ +differ +difficil +difficult +difficulti +difficulti +diffid +diffid +diffu +diffus +diffusest +dig +digest +digest +digest +digest +digg +dig +dighton +dignifi +dignifi +dignifi +digniti +digniti +digress +digress +digress +dig +digt +dilat +dilat +dilat +dilatori +dild +dildo +dilemma +dilemma +dilig +dilig +diluculo +dim +dimens +dimens +diminish +diminish +diminut +diminut +diminut +dimm +dim +dim +dimpl +dimpl +dim +din +dine +dine +diner +dine +ding +dine +dinner +dinner +dinnertim +dint +diom +diomed +diomed +dion +dip +dipp +dip +dip +dir +dire +direct +direct +direct +direct +direct +directitud +direct +directli +direct +dire +dire +direst +dirg +dirg +dirt +dirti +di +disabl +disabl +disabl +disabl +disadvantag +disagre +disallow +disanim +disannul +disannul +disappoint +disarm +disarm +disarmeth +disarm +disast +disast +disastr +disbench +disbranch +disburden +disbur +disburs +disburs +discandi +discandi +discard +discard +discas +discas +discern +discern +discern +discern +discern +discharg +discharg +discharg +discharg +discipl +discipl +disciplin +disciplin +disciplin +disciplin +disclaim +disclaim +disclaim +disclo +disclos +disclos +disclos +discolour +discolour +discolour +discomfit +discomfit +discomfitur +discomfort +discomfort +discommend +disconsol +discont +discont +discontentedli +discont +discont +discontinu +discontinu +discord +discord +discord +discours +discours +discours +discours +discours +discourtesi +discov +discov +discov +discover +discoveri +discov +discov +discoveri +discredit +discredit +discredit +discreet +discreetli +discret +discret +discuss +disdain +disdain +disdaineth +disdain +disdainfulli +disdain +disdain +disdnguish +disea +diseas +diseas +diseas +disedg +disembark +disfigur +disfigur +disfurnish +disgorg +disgrac +disgrac +disgrac +disgrac +disgrac +disgrac +disgraci +disgui +disguis +disguis +disguis +disguis +disguis +dish +dishabit +dishclout +dishearten +dishearten +dish +dishonest +dishonestli +dishonesti +dishonor +dishonor +dishonor +dishonour +dishonour +dishonour +dishonour +disinherit +disinherit +disjoin +disjoin +disjoin +disjoint +disjunct +dislik +dislik +disliken +dislik +dislimn +disloc +dislodg +disloy +disloyalti +dismal +dismantl +dismantl +dismask +dismai +dismai +dismemb +dismemb +dism +dismiss +dismiss +dismiss +dismiss +dismount +dismount +disnatur +disobedi +disobedi +disobei +disobei +disorb +disord +disord +disorderli +disord +disparag +disparag +disparag +dispark +dispatch +dispens +dispens +dispens +disper +dispers +dispers +dispersedli +dispers +dispit +displac +displac +displac +displant +displant +displai +displai +displea +displeas +displeas +displeas +displeasur +displeasur +dispong +disport +disport +dispo +dispos +dispos +dispos +dispos +disposit +disposit +dispossess +dispossess +disprai +disprais +disprais +dispraisingli +disproperti +disproport +disproport +disprov +disprov +disprov +dispurs +disput +disput +disput +disput +disput +disput +disput +disquant +disquiet +disquietli +disrelish +disrob +disseat +dissembl +dissembl +dissembl +dissembl +dissembl +dissembl +dissens +dissens +dissenti +dissev +dissip +dissolut +dissolut +dissolut +dissolut +dissolv +dissolv +dissolv +dissolv +dissuad +dissuad +distaff +distaff +distain +distain +distanc +distant +distast +distast +distast +distemp +distemp +distemperatur +distemperatur +distemp +distemp +distil +distil +distil +distil +distil +distil +distinct +distinct +distinctli +distingu +distinguish +distinguish +distinguish +distract +distract +distractedli +distract +distract +distract +distrain +distraught +distress +distress +distress +distress +distribut +distribut +distribut +distrust +distrust +disturb +disturb +disturb +disturb +disunit +disvalu +disvouch +dit +ditch +ditcher +ditch +dite +ditti +ditti +diurnal +div +dive +diver +diver +divers +divers +divert +divert +divert +dive +divest +divid +divid +divid +divid +divid +divideth +divin +divin +divin +divin +divin +divin +divin +divinest +divin +divin +divis +divis +divorc +divorc +divorc +divorc +divorc +divulg +divulg +divulg +divulg +dizi +dizzi +do +doat +dobbin +dock +dock +doct +doctor +doctor +doctrin +document +dodg +doe +doer +doer +doe +doest +doff +dog +dogberri +dogfish +dogg +dog +dog +doigt +do +do +doit +doit +dolabella +dole +dole +doll +dollar +dollar +dolor +dolor +dolour +dolour +dolphin +dolt +dolt +domest +domest +domin +domin +domin +domin +domin +domin +domin +dominion +dominion +domitiu +dommelton +don +donalbain +donat +donc +doncast +done +dong +donn +donn +donner +donnerai +doom +doomsdai +door +doorkeep +door +dorca +doreu +doricl +dormous +dorothi +dorset +dorsetshir +dost +dotag +dotant +dotard +dotard +dote +dote +doter +dote +doteth +doth +dote +doubl +doubl +doubl +doubler +doublet +doublet +doubl +doubli +doubt +doubt +doubt +doubtfulli +doubt +doubtless +doubt +doug +dough +doughti +doughi +dougla +dout +dout +dout +dove +dovehous +dover +dove +dow +dowag +dowdi +dower +dowerless +dower +dowla +dowl +down +downfal +downright +down +downstair +downtrod +downward +downward +downi +dowri +dowri +dowsabel +doxi +doze +dozen +dozen +dozi +drab +drab +drab +drachma +drachma +draff +drag +dragg +drag +drag +dragon +dragonish +dragon +drain +drain +drain +drake +dram +dramati +drank +draught +draught +drave +draw +drawbridg +drawer +drawer +draweth +draw +drawl +drawn +draw +drayman +draymen +dread +dread +dread +dreadfulli +dread +dread +dream +dreamer +dreamer +dream +dream +dreamt +drearn +dreari +dreg +dreg +drench +drench +dress +dress +dresser +dress +dress +drest +drew +dribbl +dri +drier +dri +drift +drili +drink +drinketh +drink +drink +drink +driv +drive +drivel +driven +drive +driveth +drive +drizzl +drizzl +drizzl +droit +drolleri +dromio +dromio +drone +drone +droop +droopeth +droop +droop +drop +dropheir +droplet +dropp +dropper +droppeth +drop +drop +drop +dropsi +dropsi +dropsi +dropt +dross +drossi +drought +drove +droven +drovier +drown +drown +drown +drown +drow +drows +drowsili +drowsi +drowsi +drudg +drudgeri +drudg +drug +drugg +drug +drum +drumbl +drummer +drum +drum +drunk +drunkard +drunkard +drunken +drunkenli +drunken +dry +dryness +dst +du +dub +dubb +ducat +ducat +ducdam +duchess +duchi +duchi +duck +duck +duck +dudgeon +due +duellist +duello +duer +due +duff +dug +dug +duke +dukedom +dukedom +duke +dulcet +dulch +dull +dullard +duller +dullest +dull +dull +dull +dulli +dul +duli +dumain +dumb +dumb +dumbl +dumb +dump +dump +dun +duncan +dung +dungeon +dungeon +dunghil +dunghil +dungi +dunnest +dunsinan +dunsmor +dunstabl +dupp +duranc +dure +durst +duski +dust +dust +dusti +dutch +dutchman +duteou +duti +duti +duti +dwarf +dwarfish +dwell +dweller +dwell +dwell +dwelt +dwindl +dy +dye +dy +dyer +dy +e +each +eager +eagerli +eager +eagl +eagl +ean +eanl +ear +ear +earl +earldom +earlier +earliest +earli +earl +earli +earn +earn +earnest +earnestli +earnest +earn +ear +earth +earthen +earthlier +earthli +earthquak +earthquak +earthi +ea +eas +eas +eas +eas +easier +easiest +easiliest +easili +easi +eas +east +eastcheap +easter +eastern +eastward +easi +eat +eaten +eater +eater +eat +eat +eaux +eav +ebb +eb +ebb +ebon +eboni +ebrew +ecc +echapp +echo +echo +eclip +eclips +eclips +ecoli +ecoutez +ecstaci +ecstasi +ecstasi +ecu +eden +edg +edgar +edg +edg +edgeless +edg +edict +edict +edific +edific +edifi +edifi +edit +edm +edmund +edmund +edmundsburi +educ +educ +educ +edward +eel +eel +effect +effect +effectless +effect +effectu +effectu +effemin +effigi +effu +effus +effus +eftest +egal +egal +eget +egeu +egg +egg +eggshel +eglamour +eglantin +egma +ego +egregi +egregi +egress +egypt +egyptian +egyptian +eie +eight +eighteen +eighth +eightpenni +eighti +eisel +either +eject +ek +el +elb +elbow +elbow +eld +elder +elder +eldest +eleanor +elect +elect +elect +eleg +elegi +element +element +eleph +eleph +elev +eleven +eleventh +elf +elflock +eliad +elinor +elizabeth +ell +ell +ellen +elm +eloqu +eloqu +els +elsewher +elsinor +eltham +elv +elvish +eli +elysium +em +embal +embalm +embalm +embark +embark +embarqu +embassad +embassag +embassi +embassi +embattail +embattl +embattl +embai +embellish +ember +emblaz +emblem +emblem +embodi +embold +embolden +emboss +emboss +embound +embowel +embowel +embrac +embrac +embrac +embrac +embrac +embrac +embrac +embrasur +embroid +embroideri +emhrac +emilia +emin +emin +emin +emmanuel +emniti +empal +emper +emperess +emperi +emperor +emperi +emphasi +empir +empir +empiricut +empleach +emploi +emploi +employ +employ +employ +empoison +empress +empti +emptier +empti +empti +empti +empti +emul +emul +emul +emul +emul +en +enact +enact +enact +enactur +enamel +enamel +enamour +enamour +enanmour +encamp +encamp +encav +enceladu +enchaf +enchaf +enchant +enchant +enchant +enchantingli +enchant +enchantress +enchant +encha +encircl +encircl +enclo +enclos +enclos +enclos +encloseth +enclos +encloud +encompass +encompass +encompasseth +encompass +encor +encorpor +encount +encount +encount +encount +encourag +encourag +encourag +encrimson +encroach +encumb +end +endamag +endamag +endang +endart +endear +endear +endeavour +endeavour +end +ender +end +end +endit +endless +endow +endow +endow +endow +end +endu +endu +endur +endur +endur +endur +endur +endur +endymion +enea +enemi +enemi +enerni +enew +enfeebl +enfeebl +enfeoff +enfett +enfold +enforc +enforc +enforc +enforcedli +enforc +enforc +enforcest +enfranch +enfranchi +enfranchis +enfranchis +enfranchis +enfre +enfreedom +engag +engag +engag +engag +engag +engaol +engend +engend +engend +engild +engin +engin +engin +engin +engirt +england +english +englishman +englishmen +englut +englut +engraf +engraft +engraft +engrav +engrav +engross +engross +engrossest +engross +engross +enguard +enigma +enigmat +enjoin +enjoin +enjoi +enjoi +enjoy +enjoi +enjoi +enkindl +enkindl +enlard +enlarg +enlarg +enlarg +enlarg +enlargeth +enlighten +enlink +enmesh +enmiti +enmiti +ennobl +ennobl +enobarb +enobarbu +enon +enorm +enorm +enough +enow +enpatron +enpierc +enquir +enquir +enquir +enrag +enrag +enrag +enrag +enrank +enrapt +enrich +enrich +enrich +enridg +enr +enrob +enrob +enrol +enrol +enroot +enround +enschedul +ensconc +ensconc +enseam +ensear +enseign +enseignez +ensembl +enshelt +enshield +enshrin +ensign +ensign +enski +ensman +ensnar +ensnar +ensnareth +ensteep +ensu +ensu +ensu +ensu +ensu +enswath +ent +entail +entam +entangl +entangl +entendr +enter +enter +enter +enterpris +enterpris +enter +entertain +entertain +entertain +entertain +entertain +entertain +enthral +enthral +enthron +enthron +entic +entic +entic +entir +entir +entitl +entitl +entitl +entomb +entomb +entrail +entranc +entranc +entrap +entrapp +entr +entreat +entreat +entreati +entreat +entreat +entreat +entreati +entrench +entri +entwist +envelop +envenom +envenom +envenom +envi +envi +enviou +envious +environ +environ +envoi +envi +envi +enwheel +enwomb +enwrap +ephesian +ephesian +ephesu +epicur +epicurean +epicur +epicur +epicuru +epidamnum +epidauru +epigram +epilepsi +epilept +epilogu +epilogu +epistl +epistrophu +epitaph +epitaph +epithet +epitheton +epithet +epitom +equal +equal +equal +equal +equal +equal +equal +equinocti +equinox +equipag +equiti +equivoc +equivoc +equivoc +equivoc +equivoc +er +erbear +erbear +erbear +erbeat +erblow +erboard +erborn +ercam +ercast +ercharg +ercharg +ercharg +ercl +ercom +ercov +ercrow +erdo +er +erebu +erect +erect +erect +erect +erect +erewhil +erflourish +erflow +erflow +erflow +erfraught +erga +ergal +erglanc +ergo +ergon +ergrow +ergrown +ergrowth +erhang +erhang +erhasti +erhear +erheard +eringo +erjoi +erleap +erleap +erleaven +erlook +erlook +ermast +ermengar +ermount +ern +ernight +ero +erpaid +erpart +erpast +erpai +erpeer +erperch +erpictur +erpingham +erpost +erpow +erpress +erpress +err +errand +errand +errant +errat +erraught +erreach +er +errest +er +erron +error +error +err +errul +errun +erset +ershad +ershad +ershin +ershot +ersiz +erskip +erslip +erspread +erst +erstar +erstep +erstunk +erswai +erswai +erswel +erta +ertak +erteem +erthrow +erthrown +erthrow +ertook +ertop +ertop +ertrip +erturn +erudit +erupt +erupt +ervalu +erwalk +erwatch +erween +erween +erweigh +erweigh +erwhelm +erwhelm +erworn +es +escalu +escap +escap +escap +escap +eschew +escot +esil +especi +especi +esper +espial +espi +espi +espou +espous +espi +esquir +esquir +essai +essai +essenc +essenti +essenti +ess +essex +est +establish +establish +estat +estat +esteem +esteem +esteemeth +esteem +esteem +estim +estim +estim +estim +estim +estrang +estridg +estridg +et +etc +etcetera +et +etern +etern +etern +etern +eterniz +et +ethiop +ethiop +ethiop +ethiopian +etna +eton +etr +eunuch +eunuch +euphrat +euphroniu +euriphil +europa +europ +ev +evad +evad +evan +evas +evas +ev +even +even +evenli +event +event +event +ever +everlast +everlastingli +evermor +everi +everyon +everyth +everywher +evid +evid +evid +evil +evilli +evil +evit +ew +ewer +ewer +ew +exact +exact +exactest +exact +exact +exact +exactli +exact +exalt +exalt +examin +examin +examin +examin +examin +examin +exampl +exampl +exampl +exampl +exasper +exasper +exce +exceed +exceedeth +exceed +exceedingli +exce +excel +excel +excel +excel +excel +excel +excel +excel +excel +except +except +except +except +except +exceptless +excess +excess +exchang +exchang +exchang +exchequ +exchequ +excit +excit +excit +excit +exclaim +exclaim +exclam +exclam +exclud +excommun +excommun +excrement +excrement +excurs +excurs +excu +excus +excus +excus +excus +excusez +excus +execr +execr +execut +execut +execut +execut +execution +execution +executor +executor +exempt +exempt +exequi +exercis +exercis +exet +exeunt +exhal +exhal +exhal +exhal +exhal +exhaust +exhibit +exhibit +exhibit +exhort +exhort +exig +exil +exil +exil +exion +exist +exist +exit +exit +exorcis +exorc +exorcist +expect +expect +expect +expect +expect +expect +expect +expect +expect +expedi +expedi +expedi +expedit +expediti +expel +expel +expel +expel +expend +expens +expens +experienc +experi +experi +experi +experiment +experi +expert +expert +expiat +expiat +expir +expir +expir +expir +expir +expir +explic +exploit +exploit +expo +expos +expos +exposit +expositor +expostul +expostul +expostur +exposur +expound +expound +express +express +expresseth +express +express +expressli +expressur +expul +expuls +exquisit +exsuffl +extant +extempor +extempor +extempor +extend +extend +extend +extent +extenu +extenu +extenu +extenu +exterior +exteriorli +exterior +extermin +extern +extern +extinct +extinct +extinctur +extinguish +extirp +extirp +extirp +extol +extol +extol +exton +extort +extort +extort +extort +extra +extract +extract +extract +extraordinarili +extraordinari +extraught +extravag +extravag +extrem +extrem +extrem +extremest +extrem +extrem +exuent +exult +exult +ey +eya +eyas +ey +eyebal +eyebal +eyebrow +eyebrow +ei +eyeless +eyelid +eyelid +ey +eyesight +eyestr +ei +eyn +eyri +fa +fabian +fabl +fabl +fabric +fabul +fac +face +face +facer +face +faciant +facil +facil +facineri +face +facit +fact +faction +factionari +faction +factiou +factor +factor +faculti +faculti +fade +fade +fadeth +fadg +fade +fade +fadom +fadom +fagot +fagot +fail +fail +fail +fain +faint +faint +fainter +faint +faintli +faint +faint +fair +fairer +fairest +fairi +fair +fair +fairli +fair +fair +fairwel +fairi +fai +fait +fait +faith +faith +faithful +faithfulli +faithless +faith +faitor +fal +falchion +falcon +falconbridg +falcon +falcon +fall +fallaci +fallen +falleth +falliabl +fallibl +fall +fallow +fallow +fall +falli +falor +fals +falsehood +fals +fals +falser +falsifi +fals +falstaff +falstaff +falter +fam +fame +fame +familiar +familiar +familiarli +familiar +famili +famin +famish +famish +famou +famous +famous +fan +fanat +fanci +fanci +fane +fane +fang +fangl +fangless +fang +fann +fan +fan +fantasi +fantasi +fantast +fantast +fantast +fantastico +fantasi +fap +far +farborough +farc +fardel +fardel +fare +fare +farewel +farewel +farin +fare +farm +farmer +farmhous +farm +farr +farrow +farther +farthest +farth +farthingal +farthingal +farth +fartuou +fa +fashion +fashion +fashion +fashion +fast +fast +fasten +fasten +faster +fastest +fast +fastli +fastolf +fast +fat +fatal +fatal +fate +fate +fate +father +father +fatherless +fatherli +father +fathom +fathomless +fathom +fatig +fat +fat +fat +fatter +fattest +fat +fatuu +fauconbridg +faulconbridg +fault +faulti +faultless +fault +faulti +fauss +faust +faustus +faut +favor +favor +favor +favor +favour +favour +favour +favouredli +favour +favour +favour +favourit +favourit +favour +favout +fawn +fawneth +fawn +fawn +fai +fe +fealti +fear +fear +fearest +fear +fearful +fearfulli +fear +fear +fearless +fear +feast +feast +feast +feast +feat +feat +feater +feather +feather +feather +featli +feat +featur +featur +featur +featureless +featur +februari +feck +fed +fedari +federari +fee +feebl +feebl +feebl +feebl +feebli +feed +feeder +feeder +feedeth +feed +feed +feel +feeler +feel +feelingli +feel +fee +feet +fehement +feign +feign +feign +feil +feith +felicit +felic +fell +fellest +felli +fellow +fellowli +fellow +fellowship +fellowship +fell +felon +feloni +feloni +felt +femal +femal +feminin +fen +fenc +fenc +fencer +fenc +fend +fennel +fenni +fen +fenton +fer +ferdinand +fere +fernse +ferrara +ferrer +ferret +ferri +ferryman +fertil +fertil +fervenc +fervour +feri +fest +fest +fester +festin +festin +festiv +festiv +fet +fetch +fetch +fetch +fetlock +fetlock +fett +fetter +fetter +fetter +fettl +feu +feud +fever +fever +fever +few +fewer +fewest +few +fickl +fickl +fico +fiction +fiddl +fiddler +fiddlestick +fidel +fidelicet +fidel +fidiu +fie +field +field +field +fiend +fiend +fierc +fierc +fierc +fieri +fife +fife +fifteen +fifteen +fifteenth +fifth +fifti +fiftyfold +fig +fight +fighter +fightest +fighteth +fight +fight +figo +fig +figur +figur +figur +figur +figur +fike +fil +filbert +filch +filch +filch +file +file +file +filial +filiu +fill +fill +fillet +fill +fillip +fill +filli +film +fil +filth +filth +filthi +fin +final +finch +find +finder +findeth +find +find +find +fine +fineless +fine +finem +fine +finer +fine +finest +fing +finger +finger +finger +fingr +fingr +finic +finish +finish +finish +finless +finn +fin +finsburi +fir +firago +fire +firebrand +firebrand +fire +fire +firework +firework +fire +firk +firm +firmament +firmli +firm +first +firstl +fish +fisher +fishermen +fisher +fish +fishifi +fishmong +fishpond +fisnomi +fist +fist +fist +fistula +fit +fitchew +fit +fitli +fitment +fit +fit +fit +fitter +fittest +fitteth +fit +fitzwat +five +fivep +five +fix +fix +fix +fixeth +fix +fixtur +fl +flag +flag +flagon +flagon +flag +flail +flake +flaki +flam +flame +flamen +flamen +flame +flame +flaminiu +flander +flannel +flap +flare +flash +flash +flash +flask +flat +flatli +flat +flat +flatt +flatter +flatter +flatter +flatter +flatterest +flatteri +flatter +flatter +flatteri +flaunt +flavio +flaviu +flaw +flaw +flax +flaxen +flai +flai +flea +fleanc +flea +fleck +fled +fledg +flee +fleec +fleec +fleec +fleer +fleer +fleer +fleet +fleeter +fleet +fleme +flemish +flesh +flesh +fleshli +fleshment +fleshmong +flew +flexibl +flexur +flibbertigibbet +flicker +flidg +flier +fli +flieth +flight +flight +flighti +flinch +fling +flint +flint +flinti +flirt +float +float +float +flock +flock +flood +floodgat +flood +floor +flora +florenc +florentin +florentin +florentiu +florizel +flote +floulish +flour +flourish +flourish +flourisheth +flourish +flout +flout +flout +flout +flow +flow +flower +floweret +flower +flow +flown +flow +fluellen +fluent +flung +flush +flush +fluster +flute +flute +flutter +flux +fluxiv +fly +fly +fo +foal +foal +foam +foam +foam +foam +foami +fob +foc +fodder +foe +foeman +foemen +foe +fog +foggi +fog +foh +foi +foil +foil +foil +foin +foin +foin +foi +foison +foison +foist +foix +fold +fold +fold +folio +folk +folk +folli +follow +follow +follow +follow +followest +follow +follow +folli +fond +fonder +fondli +fond +font +fontibel +food +fool +fooleri +fooleri +foolhardi +fool +foolish +foolishli +foolish +fool +foot +footbal +footboi +footboi +foot +footfal +foot +footman +footmen +footpath +footstep +footstool +fopp +fop +fopperi +foppish +fop +for +forag +forag +forbad +forbear +forbear +forbear +forbid +forbidden +forbiddenli +forbid +forbod +forborn +forc +forc +forc +forc +forceless +forc +forcibl +forcibl +forc +ford +fordid +fordo +fordo +fordon +fore +forecast +forefath +forefath +forefing +forego +foregon +forehand +forehead +forehead +forehors +foreign +foreign +foreign +foreknow +foreknowledg +foremost +forenam +forenoon +forerun +forerunn +forerun +forerun +foresaid +foresaw +foresai +forese +forese +forese +foreshow +foreskirt +foresp +forest +forestal +forestal +forest +forest +forest +foretel +foretel +foretel +forethink +forethought +foretold +forev +foreward +forewarn +forewarn +forewarn +forfeit +forfeit +forfeit +forfeit +forfeit +forfeitur +forfeitur +forfend +forfend +forg +forgav +forg +forg +forgeri +forgeri +forg +forget +forget +forget +forget +forget +forget +forgiv +forgiven +forgiv +forgo +forgo +forgon +forgot +forgotten +fork +fork +fork +forlorn +form +formal +formal +form +former +formerli +formless +form +fornic +fornic +fornicatress +forr +forrest +forsak +forsaken +forsaketh +forslow +forsook +forsooth +forspent +forspok +forswear +forswear +forswor +forsworn +fort +fort +forth +forthcom +forthlight +forthright +forthwith +fortif +fortif +fortifi +fortifi +fortifi +fortinbra +fortitud +fortnight +fortress +fortress +fort +fortun +fortuna +fortun +fortun +fortun +fortun +fortun +fortward +forti +forum +forward +forward +forward +forward +forweari +fosset +fost +foster +foster +fought +foughten +foul +fouler +foulest +foulli +foul +found +foundat +foundat +found +founder +fount +fountain +fountain +fount +four +fourscor +fourteen +fourth +foutra +fowl +fowler +fowl +fowl +fox +fox +foxship +fract +fraction +fraction +fragil +fragment +fragment +fragrant +frail +frailer +frailti +frailti +fram +frame +frame +frame +frampold +fran +francai +franc +franc +franchis +franchis +franchis +franchis +francia +franci +francisca +franciscan +francisco +frank +franker +frankfort +franklin +franklin +frankli +frank +frantic +franticli +frateretto +fratrum +fraud +fraud +fraught +fraughtag +fraught +frai +frai +freckl +freckl +freckl +frederick +free +freed +freedom +freedom +freeheart +freelier +freeli +freeman +freemen +freeness +freer +free +freeston +freetown +freez +freez +freez +freez +french +frenchman +frenchmen +frenchwoman +frenzi +frequent +frequent +fresh +fresher +fresh +freshest +freshli +fresh +fret +fret +fret +fret +fretten +fret +friar +friar +fridai +fridai +friend +friend +friend +friendless +friendli +friendli +friend +friendship +friendship +friez +fright +fright +frighten +fright +fright +fright +fring +fring +fripperi +frisk +fritter +frivol +fro +frock +frog +frogmor +froissart +frolic +from +front +front +frontier +frontier +front +frontlet +front +frost +frost +frosti +froth +froward +frown +frown +frowningli +frown +froze +frozen +fructifi +frugal +fruit +fruiter +fruit +fruitfulli +fruit +fruition +fruitless +fruit +frush +frustrat +frutifi +fry +fubb +fuel +fugit +fulfil +fulfil +fulfil +fulfil +full +fullam +fuller +fuller +fullest +full +fulli +ful +fulsom +fulvia +fum +fumbl +fumbl +fumblest +fumbl +fume +fume +fume +fumit +fumitori +fun +function +function +fundament +funer +funer +fur +furbish +furi +furiou +furlong +furnac +furnac +furnish +furnish +furnish +furnitur +furniv +furor +furr +furrow +furrow +furrow +furth +further +further +further +furthermor +furthest +furi +furz +furz +fust +fustian +fustilarian +fusti +fut +futur +futur +g +gabbl +gaberdin +gabriel +gad +gad +gad +gadshil +gag +gage +gage +gagg +gage +gagn +gain +gain +gainer +gaingiv +gain +gainsaid +gainsai +gainsai +gainsai +gainst +gait +gait +galath +gale +galen +gale +gall +gallant +gallantli +gallantri +gallant +gall +galleri +gallei +gallei +gallia +gallian +galliard +galliass +gallimaufri +gall +gallon +gallop +gallop +gallop +gallow +gallowai +gallowglass +gallow +gallows +gall +gallu +gam +gambol +gambold +gambol +gamboi +game +gamer +game +gamesom +gamest +game +gammon +gamut +gan +gangren +ganymed +gaol +gaoler +gaoler +gaol +gap +gape +gape +gape +gar +garb +garbag +garboil +garcon +gard +gard +garden +garden +garden +garden +gardez +gardin +gardon +gargantua +gargrav +garish +garland +garland +garlic +garment +garment +garmet +garner +garner +garnish +garnish +garret +garrison +garrison +gart +garter +garterd +garter +garter +gasconi +gash +gash +gaskin +gasp +gasp +gast +gast +gat +gate +gate +gate +gath +gather +gather +gather +gather +gatori +gatori +gaud +gaudeo +gaudi +gaug +gaul +gaultre +gaunt +gauntlet +gauntlet +gav +gave +gavest +gawd +gawd +gawsei +gai +gay +gaz +gaze +gaze +gazer +gazer +gaze +gazeth +gaze +gear +geck +gees +geffrei +geld +geld +geld +gelida +gelidu +gelt +gem +gemini +gem +gen +gender +gender +gener +gener +gener +gener +gener +gener +generos +gener +genit +genitivo +geniu +gennet +genoa +genoux +gen +gent +gentilhomm +gentil +gentl +gentlefolk +gentleman +gentlemanlik +gentlemen +gentl +gentler +gentl +gentlest +gentlewoman +gentlewomen +gentli +gentri +georg +gerard +germain +germain +german +german +german +germani +gertrud +gest +gest +gestur +gestur +get +getrud +get +getter +get +ghastli +ghost +ghost +ghostli +ghost +gi +giant +giantess +giantlik +giant +gib +gibber +gibbet +gibbet +gibe +giber +gibe +gibe +gibingli +giddili +giddi +giddi +gift +gift +gig +giglet +giglot +gilbert +gild +gild +gild +gilliam +gillian +gill +gillyvor +gilt +gimmal +gimmer +gin +ging +ginger +gingerbread +gingerli +ginn +gin +gioucestershir +gipe +gipsi +gipsi +gird +gird +girdl +girdl +girdl +girdl +girl +girl +girt +girth +gi +giv +give +given +giver +giver +give +givest +giveth +give +give +glad +glad +glad +gladli +glad +glami +glanc +glanc +glanc +glanc +glanc +glander +glansdal +glare +glare +glass +glass +glassi +glaz +glaze +gleam +glean +glean +glean +gleeful +gleek +gleek +gleek +glend +glendow +glib +glide +glide +glide +glideth +glide +glimmer +glimmer +glimmer +glimps +glimps +glist +glisten +glister +glister +glister +glitt +glitter +globe +globe +gloom +gloomi +glori +glorifi +glorifi +gloriou +glorious +glori +glose +gloss +gloss +glou +gloucest +gloucest +gloucestershir +glove +glover +glove +glow +glow +glow +glowworm +gloz +gloze +gloze +glu +glue +glu +glue +glut +glutt +glut +glutton +glutton +gluttoni +gnarl +gnarl +gnat +gnat +gnaw +gnaw +gnawn +gnaw +go +goad +goad +goad +goal +goat +goatish +goat +gobbet +gobbo +goblet +goblet +goblin +goblin +god +god +godden +goddess +goddess +goddild +godfath +godfath +godhead +godlik +godli +godli +godmoth +god +godson +goer +goer +goe +goest +goeth +goff +gog +go +gold +golden +goldenli +goldsmith +goldsmith +golgotha +golias +goliath +gon +gondola +gondoli +gone +goneril +gong +gonzago +gonzalo +good +goodfellow +goodlier +goodliest +goodli +goodman +good +goodnight +goodrig +good +goodwif +goodwil +goodwin +goodwin +goodyear +goodyear +goos +gooseberri +goosequil +goot +gor +gorbelli +gorboduc +gordian +gore +gore +gorg +gorg +gorgeou +gorget +gorg +gorgon +gormand +gormand +gori +gosl +gospel +gospel +goss +gossam +gossip +gossip +gossiplik +gossip +got +goth +goth +gotten +gourd +gout +gout +gouti +govern +govern +govern +gover +govern +governor +governor +govern +gower +gown +gown +grac +grace +grace +grace +gracefulli +graceless +grace +grace +graciou +gracious +gradat +graff +graf +graft +graft +grafter +grain +grain +grain +gramerci +gramerci +grammar +grand +grandam +grandam +grandchild +grand +grandeur +grandfath +grandjuror +grandmoth +grandpr +grandsir +grandsir +grandsir +grang +grant +grant +grant +grant +grape +grape +grappl +grappl +grappl +grasp +grasp +grasp +grass +grasshopp +grassi +grate +grate +grate +grate +gratiano +gratifi +gratii +gratil +grate +grati +gratitud +gratul +grav +grave +gravedigg +gravel +graveless +gravel +grave +graven +grave +graver +grave +gravest +graveston +graviti +graviti +gravi +grai +graymalkin +graz +graze +graze +graze +greas +greas +greasili +greasi +great +greater +greatest +greatli +great +grecian +grecian +gree +greec +greed +greedili +greedi +greedi +gree +greek +greekish +greek +green +greener +greenli +green +greensleev +greenwich +greenwood +greet +greet +greet +greet +greet +greg +gregori +gremio +grew +grei +greybeard +greybeard +greyhound +greyhound +grief +grief +griev +grievanc +grievanc +griev +griev +griev +grievest +griev +grievingli +grievou +grievous +griffin +griffith +grim +grime +grimli +grin +grind +grind +grindston +grin +grip +gripe +gripe +gripe +grise +grisli +grissel +grize +grizzl +grizzl +groan +groan +groan +groat +groat +groin +groom +groom +grop +grope +gro +gross +grosser +grossli +gross +ground +ground +groundl +ground +grove +grovel +grovel +grove +grow +groweth +grow +grown +grow +growth +grub +grubb +grub +grudg +grudg +grudg +grudg +gruel +grumbl +grumblest +grumbl +grumbl +grumio +grund +grunt +gualtier +guard +guardag +guardant +guard +guardian +guardian +guard +guardsman +gud +gudgeon +guerdon +guerra +guess +guess +guessingli +guest +guest +guiana +guichard +guid +guid +guider +guideriu +guid +guid +guidon +guienn +guil +guildenstern +guilder +guildford +guildhal +guil +guil +guil +guilford +guilt +guiltian +guiltier +guiltili +guilti +guiltless +guilt +guilti +guinea +guinev +guis +gul +gule +gulf +gulf +gull +gull +gum +gumm +gum +gun +gunner +gunpowd +gun +gurnet +gurnei +gust +gust +gusti +gut +gutter +gui +guyn +guysor +gypsi +gyve +gyve +gyve +h +ha +haberdash +habili +habili +habit +habit +habit +habit +habitud +hack +hacket +hacknei +hack +had +hadst +haec +haer +hag +hagar +haggard +haggard +haggish +haggl +hag +hail +hail +hailston +hailston +hair +hairless +hair +hairi +hal +halberd +halberd +halcyon +hale +hale +hale +half +halfcan +halfpenc +halfpenni +halfpennyworth +halfwai +halidom +hall +halloa +hallo +hallond +halloo +halloo +hallow +hallow +hallowma +hallown +hal +halt +halter +halter +halt +halt +halv +ham +hame +hamlet +hammer +hammer +hammer +hammer +hamper +hampton +ham +hamstr +hand +hand +hand +handicraft +handicraftsmen +hand +handiwork +handkerch +handkerch +handkerchief +handl +handl +handl +handless +handlest +handl +handmaid +handmaid +hand +handsaw +handsom +handsom +handsom +handwrit +handi +hang +hang +hanger +hangeth +hang +hang +hangman +hangmen +hang +hannib +hap +hapless +hapli +happ +happen +happen +happier +happi +happiest +happili +happi +happi +hap +harbing +harbing +harbor +harbour +harbourag +harbour +harbour +harcourt +hard +harder +hardest +hardiest +hardiment +hardi +hardli +hard +hardock +hardi +hare +harelip +hare +harfleur +hark +harlot +harlotri +harlot +harm +harm +harm +harm +harmless +harmoni +harmoni +harm +har +harp +harper +harpier +harp +harpi +harri +harrow +harrow +harri +harsh +harshli +harsh +hart +hart +harum +harvest +ha +hast +hast +hast +hasten +hast +hastili +hast +hast +hasti +hat +hatch +hatch +hatchet +hatch +hatchment +hate +hate +hate +hater +hater +hate +hateth +hatfield +hath +hate +hatr +hat +haud +hauf +haught +haughti +haughti +haunch +haunch +haunt +haunt +haunt +haunt +hautboi +hautboi +have +haven +haven +haver +have +have +havior +haviour +havoc +hawk +hawk +hawk +hawthorn +hawthorn +hai +hazard +hazard +hazard +hazel +hazelnut +he +head +headborough +head +headier +head +headland +headless +headlong +head +headsman +headstrong +headi +heal +heal +heal +heal +health +health +health +healthsom +healthi +heap +heap +heap +hear +heard +hearer +hearer +hearest +heareth +hear +hear +heark +hearken +hearken +hear +hearsai +hears +hears +hearst +heart +heartach +heartbreak +heartbreak +heart +hearten +hearth +hearth +heartili +hearti +heartless +heartl +heartli +heart +heartsick +heartstr +hearti +heat +heat +heath +heathen +heathenish +heat +heat +heauti +heav +heav +heav +heaven +heavenli +heaven +heav +heavier +heaviest +heavili +heavi +heav +heav +heavi +hebona +hebrew +hecat +hectic +hector +hector +hecuba +hedg +hedg +hedgehog +hedgehog +hedg +heed +heed +heed +heedful +heedfulli +heedless +heel +heel +heft +heft +heifer +heifer +heigh +height +heighten +heinou +heinous +heir +heiress +heirless +heir +held +helen +helena +helenu +helia +helicon +hell +hellespont +hellfir +hellish +helm +helm +helmet +helmet +helm +help +helper +helper +help +help +helpless +help +helter +hem +heme +hemlock +hemm +hemp +hempen +hem +hen +henc +henceforth +henceforward +henchman +henri +henricu +henri +hen +hent +henton +her +herald +heraldri +herald +herb +herbert +herblet +herb +herculean +hercul +herd +herd +herdsman +herdsmen +here +hereabout +hereabout +hereaft +herebi +hereditari +hereford +herefordshir +herein +hereof +heresi +heresi +heret +heret +hereto +hereupon +heritag +heriti +herm +hermia +hermion +hermit +hermitag +hermit +hern +hero +herod +herod +hero +heroic +heroic +her +her +her +herself +hesperid +hesperu +hest +hest +heur +heureux +hew +hewgh +hew +hewn +hew +hei +heydai +hibocr +hic +hiccup +hick +hid +hidden +hide +hideou +hideous +hideous +hide +hidest +hide +hie +hi +hiem +hi +hig +high +higher +highest +highli +highmost +high +hight +highwai +highwai +hild +hild +hill +hillo +hilloa +hill +hilt +hilt +hili +him +himself +hinc +hincklei +hind +hinder +hinder +hinder +hindmost +hind +hing +hing +hing +hint +hip +hipp +hipparchu +hippolyta +hip +hir +hire +hire +hiren +hirtiu +hi +hisperia +hiss +hiss +hiss +hist +histor +histori +hit +hither +hitherto +hitherward +hitherward +hit +hit +hive +hive +hizz +ho +hoa +hoar +hoard +hoard +hoard +hoar +hoars +hoari +hob +hobbidid +hobbi +hobbyhors +hobgoblin +hobnail +hoc +hod +hodg +hog +hog +hogshead +hogshead +hoi +hois +hoist +hoist +hoist +holborn +hold +holden +holder +holdeth +holdfast +hold +hold +hole +hole +holidam +holidam +holidai +holidai +holier +holiest +holili +holi +holla +holland +holland +holland +holloa +holloa +hollow +hollowli +hollow +holli +holmedon +holofern +holp +holi +homag +homag +home +home +home +homespun +homeward +homeward +homicid +homicid +homili +hominem +homm +homo +honest +honest +honestest +honestli +honesti +honei +honeycomb +honei +honeyless +honeysuckl +honeysuckl +honi +honneur +honor +honor +honor +honorato +honorificabilitudinitatibu +honor +honour +honour +honour +honour +honourest +honour +honour +honour +hoo +hood +hood +hoodman +hood +hoodwink +hoof +hoof +hook +hook +hook +hoop +hoop +hoot +hoot +hoot +hoot +hop +hope +hope +hopeless +hope +hopest +hope +hopkin +hopped +hor +horac +horatio +horizon +horn +hornbook +horn +horner +horn +hornpip +horn +horolog +horribl +horribl +horrid +horrid +horridli +horror +horror +hor +hors +horseback +hors +horsehair +horseman +horsemanship +horsemen +hors +horsewai +hors +hortensio +hortensiu +horum +hose +hospit +hospit +hospit +host +hostag +hostag +hostess +hostil +hostil +hostiliu +host +hot +hotli +hotspur +hotter +hottest +hound +hound +hour +hourli +hour +hou +hous +household +household +household +household +housekeep +housekeep +housekeep +houseless +hous +housewif +housewiferi +housew +hovel +hover +hover +hover +hover +how +howbeit +how +howeer +howev +howl +howl +howlet +howl +howl +howso +howsoev +howsom +hox +hoi +hoydai +hubert +huddl +huddl +hue +hu +hue +hug +huge +huge +huge +hugg +hugger +hugh +hug +huju +hulk +hulk +hull +hull +hullo +hum +human +human +human +human +humbl +humbl +humbl +humbler +humbl +humblest +humbl +humbl +hume +humh +humid +humil +hum +humor +humor +humor +humour +humourist +humour +humphrei +humphri +hum +hundr +hundr +hundredth +hung +hungarian +hungari +hunger +hungerford +hungerli +hungri +hunt +hunt +hunter +hunter +hunteth +hunt +huntington +huntress +hunt +huntsman +huntsmen +hurdl +hurl +hurl +hurl +hurli +hurlyburli +hurricano +hurricano +hurri +hurri +hurri +hurt +hurt +hurtl +hurtless +hurtl +hurt +husband +husband +husbandless +husbandri +husband +hush +hush +husht +husk +huswif +huswif +hutch +hybla +hydra +hyen +hymen +hymenaeu +hymn +hymn +hyperbol +hyperbol +hyperion +hypocrisi +hypocrit +hypocrit +hyrcan +hyrcania +hyrcanian +hyssop +hysterica +i +iachimo +iaculi +iago +iament +ibat +icaru +ic +iceland +ici +icicl +icicl +ici +idea +idea +idem +iden +id +idiot +idiot +idl +idl +idl +idli +idol +idolatr +idolatri +ield +if +if +igni +ignobl +ignobl +ignomini +ignomini +ignomi +ignor +ignor +ii +iii +iiii +il +ilbow +ild +ilion +ilium +ill +illegitim +illiter +ill +illo +ill +illum +illumin +illumin +illumineth +illus +illus +illustr +illustr +illustri +illyria +illyrian +il +im +imag +imageri +imag +imagin +imaginari +imagin +imagin +imagin +imagin +imagin +imbar +imbecil +imbru +imitari +imit +imit +imit +imit +immacul +imman +immask +immateri +immediaci +immedi +immedi +immin +immin +immoder +immoder +immodest +immoment +immort +immortaliz +immort +immur +immur +immur +imogen +imp +impaint +impair +impair +impal +impal +impanel +impart +impart +imparti +impart +impart +impast +impati +impati +impati +impawn +impeach +impeach +impeach +impeach +imped +impedi +impedi +impenetr +imper +imperceiver +imperfect +imperfect +imperfect +imperfectli +imperi +imperi +imperi +impertin +impertin +impetico +impetuos +impetu +impieti +impieti +impiou +implac +implement +impli +implor +implor +implor +implor +implor +impon +import +import +import +import +importantli +import +importeth +import +importless +import +importun +importunaci +importun +importun +importun +importun +impo +impos +impos +imposit +imposit +imposs +imposs +imposs +imposthum +impostor +impostor +impot +impot +impound +impregn +impres +impress +impress +impressest +impress +impressur +imprimendum +imprimi +imprint +imprint +imprison +imprison +imprison +imprison +improb +improp +improv +improvid +impud +impud +impud +impud +impudiqu +impugn +impugn +impur +imput +imput +in +inaccess +inaid +inaud +inauspici +incag +incant +incap +incardin +incarnadin +incarn +incarn +incen +incens +incens +incens +incens +incens +incertain +incertainti +incertainti +incess +incessantli +incest +incestu +inch +incharit +inch +incid +incid +incis +incit +incit +incivil +incivil +inclin +inclin +inclin +inclin +inclin +inclin +inclin +inclip +includ +includ +includ +inclus +incompar +incomprehens +inconsider +inconst +inconst +incontin +incontin +incontin +inconveni +inconveni +inconveni +inconi +incorpor +incorp +incorrect +increa +increas +increas +increaseth +increas +incred +incredul +incur +incur +incurr +incur +incurs +ind +ind +indebt +inde +indent +indent +indentur +indentur +index +index +india +indian +indict +indict +indict +indi +indiffer +indiffer +indiffer +indig +indigest +indigest +indign +indign +indign +indign +indign +indign +indirect +indirect +indirect +indirectli +indiscreet +indiscret +indispo +indisposit +indissolubl +indistinct +indistinguish +indistinguish +indit +individ +indrench +indu +indubit +induc +induc +induc +induc +induct +induct +indu +indu +indu +indulg +indulg +indulg +indur +industri +industri +industri +inequ +inestim +inevit +inexecr +inexor +inexplic +infal +infal +infamon +infam +infami +infanc +infant +infant +infect +infect +infect +infect +infect +infecti +infecti +infect +infer +infer +inferior +inferior +infern +inferr +inferreth +infer +infest +infidel +infidel +infinit +infinit +infinit +infirm +infirm +infirm +infix +infix +inflam +inflam +inflam +inflamm +inflict +inflict +influenc +influenc +infold +inform +inform +inform +inform +inform +inform +inform +infortun +infr +infring +infring +infu +infus +infus +infus +infus +ingen +ingeni +ingeni +inglori +ingot +ingraf +ingraft +ingrat +ingrat +ingrat +ingratitud +ingratitud +ingredi +ingredi +ingross +inhabit +inhabit +inhabit +inhabit +inhabit +inhears +inhears +inher +inherit +inherit +inherit +inherit +inheritor +inheritor +inheritrix +inherit +inhibit +inhibit +inhoop +inhuman +iniqu +iniqu +initi +injoint +injunct +injunct +injur +injur +injur +injuri +injuri +injuri +injustic +ink +inkhorn +inkl +inkl +inkl +inki +inlaid +inland +inlai +inli +inmost +inn +inner +innkeep +innoc +innoc +innoc +innoc +innov +innov +inn +innumer +inocul +inordin +inprimi +inquir +inquir +inquiri +inquisit +inquisit +inroad +insan +insani +insati +insconc +inscrib +inscript +inscript +inscrol +inscrut +insculp +insculptur +insens +insepar +insepar +insert +insert +inset +inshel +inshipp +insid +insinew +insinu +insinuateth +insinu +insinu +insist +insist +insistur +insoci +insol +insol +insomuch +inspir +inspir +inspir +inspir +inspir +instal +instal +instal +instanc +instanc +instant +instantli +instat +instead +insteep +instig +instig +instig +instig +instig +instinct +instinct +institut +institut +instruct +instruct +instruct +instruct +instruct +instrument +instrument +instrument +insubstanti +insuffici +insuffici +insult +insult +insult +insult +insult +insupport +insuppress +insurrect +insurrect +int +integ +integrita +integr +intellect +intellect +intellectu +intellig +intelligenc +intelligenc +intellig +intelligi +intelligo +intemper +intemper +intend +intend +intendeth +intend +intend +intend +inten +intent +intent +intent +intent +inter +intercept +intercept +intercept +intercept +intercept +intercess +intercessor +interchain +interchang +interchang +interchang +interchang +interchang +interdict +interest +interim +interim +interior +interject +interjoin +interlud +intermingl +intermiss +intermiss +intermit +intermix +intermix +interpos +interpos +interpos +interpret +interpret +interpret +interpret +interpret +interpret +interr +inter +interrogatori +interrupt +interrupt +interrupt +interruptest +interrupt +interrupt +intertissu +intervallum +interview +intest +intestin +intil +intim +intim +intitl +intitul +into +intoler +intox +intreasur +intreat +intrench +intrench +intric +intrins +intrins +intrud +intrud +intrud +intrus +inund +inur +inurn +invad +invad +invas +invas +invect +invect +inveigl +invent +invent +invent +invent +inventor +inventori +inventori +inventor +inventori +inver +invert +invest +invest +invest +invest +inveter +invinc +inviol +invis +invis +invit +invit +invit +invit +invit +inviti +invoc +invoc +invok +invok +invulner +inward +inwardli +inward +inward +ionia +ionian +ips +ipswich +ira +ira +ira +ir +ir +ireland +iri +irish +irishman +irishmen +irk +irksom +iron +iron +irreconcil +irrecover +irregular +irregul +irreligi +irremov +irrepar +irresolut +irrevoc +is +isabel +isabella +isbel +isbel +iscariot +is +ish +isidor +isi +island +island +island +island +isl +isl +israel +issu +issu +issu +issueless +issu +issu +ist +ista +it +italian +itali +itch +itch +itch +item +item +iter +ithaca +it +itself +itshal +iv +ivori +ivi +iwi +ix +j +jacet +jack +jackanap +jack +jacksauc +jackslav +jacob +jade +jade +jade +jail +jake +jamani +jame +jami +jane +jangl +jangl +januari +janu +japhet +jaquenetta +jaqu +jar +jar +jar +jarteer +jason +jaunc +jaunc +jaundic +jaundi +jaw +jawbon +jaw +jai +jai +jc +je +jealou +jealousi +jealousi +jeer +jeer +jelli +jenni +jeopardi +jephtha +jephthah +jerkin +jerkin +jerk +jeronimi +jerusalem +jeshu +jess +jessica +jest +jest +jester +jester +jest +jest +jesu +jesu +jet +jet +jew +jewel +jewel +jewel +jewess +jewish +jewri +jew +jezebel +jig +jig +jill +jill +jingl +joan +job +jockei +jocund +jog +jog +john +john +join +joinder +join +joiner +joineth +join +joint +joint +joint +jointli +jointress +joint +jointur +jolliti +jolli +jolt +jolthead +jordan +joseph +joshua +jot +jour +jourdain +journal +journei +journei +journeyman +journeymen +journei +jove +jovem +jovial +jowl +jowl +joi +joi +joy +joyfulli +joyless +joyou +joi +juan +jud +juda +judas +jude +judg +judg +judg +judgement +judg +judgest +judg +judgment +judgment +judici +jug +juggl +juggl +juggler +juggler +juggl +jug +juic +juic +jul +jule +julia +juliet +julietta +julio +juliu +juli +jump +jumpeth +jump +jump +june +june +junior +juniu +junket +juno +jupit +jure +jurement +jurisdict +juror +juror +juri +jurymen +just +justeiu +justest +justic +justic +justic +justic +justif +justifi +justifi +justl +justl +justl +justl +justli +just +just +jut +jutti +juven +kam +kate +kate +kate +katharin +katherina +katherin +kecksi +keech +keel +keel +keen +keen +keep +keepdown +keeper +keeper +keepest +keep +keep +keiser +ken +kendal +kennel +kent +kentish +kentishman +kentishmen +kept +kerchief +kere +kern +kernal +kernel +kernel +kern +kersei +kettl +kettledrum +kettledrum +kei +kei +kibe +kibe +kick +kick +kickshaw +kickshaws +kicki +kid +kidnei +kike +kildar +kill +kill +killer +killeth +kill +killingworth +kill +kiln +kimbolton +kin +kind +kinder +kindest +kindl +kindl +kindless +kindlier +kindl +kindli +kind +kind +kindr +kindr +kind +kine +king +kingdom +kingdom +kingli +king +kinr +kin +kinsman +kinsmen +kinswoman +kirtl +kirtl +kiss +kiss +kiss +kiss +kitchen +kitchen +kite +kite +kitten +kj +kl +klll +knack +knack +knapp +knav +knave +knaveri +knaveri +knave +knavish +knead +knead +knead +knee +kneel +kneel +kneel +knee +knell +knew +knewest +knife +knight +knight +knighthood +knighthood +knightli +knight +knit +knit +knitter +knitteth +knive +knob +knock +knock +knock +knog +knoll +knot +knot +knot +knotti +know +knower +knowest +know +knowingli +know +knowledg +known +know +l +la +laban +label +label +labienu +labio +labor +labor +labor +labour +labour +labour +labour +labour +labour +laboursom +labra +labyrinth +lac +lace +lace +lacedaemon +lace +laci +lack +lackbeard +lack +lackei +lackei +lackei +lack +lack +lad +ladder +ladder +lade +laden +ladi +lade +lad +ladi +ladybird +ladyship +ladyship +laer +laert +lafeu +lag +lag +laid +lain +laissez +lake +lake +lakin +lam +lamb +lambert +lambkin +lambkin +lamb +lame +lame +lame +lament +lament +lament +lament +lament +lament +lament +lament +lament +lame +lame +lamma +lammastid +lamound +lamp +lampass +lamp +lanc +lancast +lanc +lanc +lanceth +lanch +land +land +land +landless +landlord +landmen +land +lane +lane +langag +langlei +langton +languag +languageless +languag +langu +languish +languish +languish +languish +languish +languish +languor +lank +lantern +lantern +lanthorn +lap +lapi +lapland +lapp +lap +laps +laps +laps +lapw +laquai +lard +larder +lard +lard +larg +larg +larg +larger +largess +largest +lark +lark +larron +lartiu +larum +larum +la +lascivi +lash +lass +lass +last +last +last +lastli +last +latch +latch +late +late +late +later +latest +lath +latin +latten +latter +lattic +laud +laudabl +laudi +laugh +laughabl +laugh +laugher +laughest +laugh +laugh +laughter +launc +launcelot +launc +launch +laund +laundress +laundri +laur +laura +laurel +laurel +laurenc +lau +lavach +lave +lave +lavend +lavina +lavinia +lavish +lavishli +lavolt +lavolta +law +law +lawfulli +lawless +lawlessli +lawn +lawn +lawrenc +law +lawyer +lawyer +lai +layer +layest +lai +lai +lazar +lazar +lazaru +lazi +lc +ld +ldst +le +lead +leaden +leader +leader +leadest +lead +lead +leaf +leagu +leagu +leagu +leaguer +leagu +leah +leak +leaki +lean +leander +leaner +lean +lean +lean +leap +leap +leap +leap +leapt +lear +learn +learn +learnedli +learn +learn +learn +learnt +lea +leas +leas +leash +leas +least +leather +leathern +leav +leav +leaven +leaven +leaver +leav +leav +leavi +lecher +lecher +lecher +lecheri +lecon +lectur +lectur +led +leda +leech +leech +leek +leek +leer +leer +lee +lees +leet +leet +left +leg +legaci +legaci +legat +legatin +lege +leger +lege +legg +legion +legion +legitim +legitim +leg +leicest +leicestershir +leiger +leiger +leisur +leisur +leisur +leman +lemon +lena +lend +lender +lend +lend +lend +length +lengthen +lengthen +length +leniti +lennox +lent +lenten +lentu +leo +leon +leonardo +leonati +leonato +leonatu +leont +leopard +leopard +leper +leper +lepidu +leprosi +lequel +ler +le +less +lessen +lessen +lesser +lesson +lesson +lesson +lest +lestrak +let +lethargi +lethargi +lethargi +leth +let +lett +letter +letter +let +lettuc +leur +leve +level +level +level +level +leven +lever +leviathan +leviathan +levi +levi +leviti +levi +levi +lewd +lewdli +lewd +lewdster +lewi +liabl +liar +liar +libbard +libel +libel +liber +liber +libert +liberti +libertin +libertin +liberti +librari +libya +licenc +licen +licens +licenti +licha +licio +lick +lick +licker +lictor +lid +lid +lie +li +lief +liefest +lieg +liegeman +liegemen +lien +li +liest +lieth +lieu +lieuten +lieutenantri +lieuten +liev +life +lifeblood +lifeless +lifel +lift +lift +lifter +lifteth +lift +lift +lig +ligariu +liggen +light +light +lighten +lighten +lighter +lightest +lightli +light +lightn +lightn +light +lik +like +like +likeliest +likelihood +likelihood +like +like +liker +like +likest +likewis +like +like +lili +lili +lim +limand +limb +limbeck +limbeck +limber +limbo +limb +lime +lime +limehous +limekiln +limit +limit +limit +limit +limn +limp +limp +limp +lin +lincoln +lincolnshir +line +lineal +lineal +lineament +lineament +line +linen +linen +line +ling +lingar +linger +linger +linger +linguist +line +link +link +linsei +linstock +linta +lion +lionel +lioness +lion +lip +lipp +lip +lipsburi +liquid +liquor +liquorish +liquor +lirra +lisbon +lisp +lisp +list +listen +listen +list +literatur +lither +litter +littl +littlest +liv +live +live +liveli +livelihood +livelong +live +liver +liveri +liver +liveri +live +livest +liveth +livia +live +live +lizard +lizard +ll +lll +llou +lnd +lo +loa +loach +load +loaden +load +load +loaf +loam +loan +loath +loath +loath +loather +loath +loath +loathli +loath +loathsom +loathsom +loathsomest +loav +lob +lobbi +lobbi +local +lochab +lock +lock +lock +lockram +lock +locust +lode +lodg +lodg +lodg +lodger +lodg +lodg +lodg +lodovico +lodowick +lofti +log +logger +loggerhead +loggerhead +logget +logic +log +loin +loiter +loiter +loiter +loiter +loll +loll +lombardi +london +london +lone +loneli +lone +long +longavil +longboat +long +longer +longest +longeth +long +long +longli +long +longtail +loo +loof +look +look +looker +looker +lookest +look +look +loon +loop +loo +loos +loos +loos +loosen +loos +lop +lopp +loquitur +lord +lord +lord +lord +lordli +lordli +lord +lordship +lordship +lorenzo +lorn +lorrain +lorship +lo +lose +loser +loser +lose +losest +loseth +lose +loss +loss +lost +lot +lot +lott +lotteri +loud +louder +loudli +lour +loureth +lour +lous +lous +lousi +lout +lout +lout +louvr +lov +love +love +lovedst +lovel +loveli +loveli +lovel +love +lover +lover +lover +love +lovest +loveth +love +lovingli +low +low +lower +lowest +low +lowli +lowli +lown +low +loyal +loyal +loyalti +loyalti +lozel +lt +lubber +lubberli +luc +luccico +luce +lucentio +luce +lucetta +luciana +lucianu +lucif +lucifi +luciliu +lucina +lucio +luciu +luck +luckier +luckiest +luckili +luckless +lucki +lucr +lucrec +lucretia +luculliu +lucullu +luci +lud +ludlow +lug +lugg +luggag +luke +lukewarm +lull +lulla +lullabi +lull +lumbert +lump +lumpish +luna +lunaci +lunaci +lunat +lunat +lune +lung +luperc +lurch +lure +lurk +lurketh +lurk +lurk +lusciou +lush +lust +lust +luster +lust +lustier +lustiest +lustig +lustihood +lustili +lustr +lustrou +lust +lusti +lute +lute +lutestr +lutheran +luxuri +luxuri +luxuri +ly +lycaonia +lycurgus +lydia +lye +lyen +ly +lym +lymog +lynn +lysand +m +ma +maan +mab +macbeth +maccabaeu +macdonwald +macduff +mace +macedon +mace +machiavel +machin +machin +machin +mack +macmorri +macul +macul +mad +madam +madam +madam +madcap +mad +mad +made +madeira +madli +madman +madmen +mad +madonna +madrig +mad +maecena +maggot +maggot +magic +magic +magician +magistr +magistr +magnanim +magnanim +magni +magnifi +magnific +magnific +magnifico +magnifico +magnu +mahomet +mahu +maid +maiden +maidenhead +maidenhead +maidenhood +maidenhood +maidenliest +maidenli +maiden +maidhood +maid +mail +mail +mail +maim +maim +maim +main +maincours +main +mainli +mainmast +main +maintain +maintain +maintain +mainten +mai +maison +majesta +majeste +majest +majest +majest +majesti +majesti +major +major +mak +make +makeless +maker +maker +make +makest +maketh +make +make +mal +mala +maladi +maladi +malapert +malcolm +malcont +malcont +male +maledict +malefact +malefactor +malefactor +male +malevol +malevol +malhecho +malic +malici +malici +malign +malign +malign +malignantli +malkin +mall +mallard +mallet +mallow +malmsei +malt +maltworm +malvolio +mamilliu +mammer +mammet +mammet +mammock +man +manacl +manacl +manag +manag +manag +manag +manakin +manchu +mandat +mandragora +mandrak +mandrak +mane +manent +mane +manet +manfulli +mangl +mangl +mangl +mangl +mangi +manhood +manhood +manifest +manifest +manifest +manifold +manifoldli +manka +mankind +manlik +manli +mann +manna +manner +mannerli +manner +manningtre +mannish +manor +manor +man +mansion +mansionri +mansion +manslaught +mantl +mantl +mantl +mantua +mantuan +manual +manur +manur +manu +mani +map +mapp +map +mar +marbl +marbl +marcad +marcellu +march +march +marcheth +march +marchio +marchpan +marcian +marciu +marcu +mardian +mare +mare +marg +margarelon +margaret +marg +margent +margeri +maria +marian +mariana +mari +marigold +marin +marin +maritim +marjoram +mark +mark +market +market +marketplac +market +mark +markman +mark +marl +marl +marmoset +marquess +marqui +marr +marriag +marriag +marri +marri +mar +marrow +marrowless +marrow +marri +marri +mar +marseil +marsh +marshal +marshalsea +marshalship +mart +mart +martem +martext +martial +martin +martino +martiu +martlema +martlet +mart +martyr +martyr +marullu +marv +marvel +marvel +marvel +marvel +marvel +mari +ma +masculin +masham +mask +mask +masker +masker +mask +mask +mason +masonri +mason +masqu +masquer +masqu +masqu +mass +massacr +massacr +mass +massi +mast +mastcr +master +masterdom +masterest +masterless +masterli +masterpiec +master +mastership +mastic +mastiff +mastiff +mast +match +match +matcheth +match +matchless +mate +mate +mater +materi +mate +mathemat +matin +matron +matron +matter +matter +matthew +mattock +mattress +matur +matur +maud +maudlin +maugr +maul +maund +mauri +mauritania +mauvai +maw +maw +maxim +mai +maydai +mayest +mayor +maypol +mayst +maz +maze +maze +maze +mazzard +me +meacock +mead +meadow +meadow +mead +meagr +meal +meal +meali +mean +meander +meaner +meanest +meaneth +mean +mean +meanli +mean +meant +meantim +meanwhil +measl +measur +measur +measur +measur +measureless +measur +measur +meat +meat +mechan +mechan +mechan +mechan +mechant +med +medal +meddl +meddler +meddl +mede +medea +media +mediat +mediat +medic +medicin +medicin +medicin +medit +medit +medit +medit +medit +mediterranean +mediterraneum +medlar +medlar +meed +meed +meek +meekli +meek +meet +meeter +meetest +meet +meet +meetli +meet +meet +meg +mehercl +meilleur +meini +meisen +melancholi +melancholi +melford +mell +melliflu +mellow +mellow +melodi +melodi +melt +melt +melteth +melt +melt +melun +member +member +memento +memor +memorandum +memori +memori +memori +memoriz +memor +memori +memphi +men +menac +menac +menac +menaphon +mena +mend +mend +mender +mend +mend +menecr +menelau +meneniu +mental +menteith +mention +menti +menton +mephostophilu +mer +mercatant +mercatio +mercenari +mercenari +mercer +merchandis +merchand +merchant +merchant +merci +merci +mercifulli +merciless +mercuri +mercuri +mercuri +mercutio +merci +mere +mere +mere +merest +meridian +merit +merit +meritori +merit +merlin +mermaid +mermaid +merop +merrier +merriest +merrili +merriman +merriment +merriment +merri +merri +mervail +me +mesh +mesh +mesopotamia +mess +messag +messag +messala +messalin +messeng +messeng +mess +messina +met +metal +metal +metamorphi +metamorphos +metaphor +metaphys +metaphys +mete +metellu +meteor +meteor +meteyard +metheglin +metheglin +methink +methink +method +method +methought +methought +metr +metr +metropoli +mett +mettl +mettl +meu +mew +mew +mewl +mexico +mi +mice +michael +michaelma +micher +mich +mickl +microcosm +mid +mida +middest +middl +middleham +midnight +midriff +midst +midsumm +midwai +midwif +midwiv +mienn +might +might +mightier +mightiest +mightili +mighti +mightst +mighti +milan +milch +mild +milder +mildest +mildew +mildew +mildli +mild +mile +mile +milford +militarist +militari +milk +milk +milkmaid +milk +milksop +milki +mill +mill +miller +millin +million +million +million +mill +millston +milo +mimic +minc +minc +minc +minc +mind +mind +mind +mindless +mind +mine +miner +miner +minerva +mine +mingl +mingl +mingl +minikin +minim +minim +minimo +minimu +mine +minion +minion +minist +minist +minist +ministr +minnow +minnow +minola +minor +mino +minotaur +minstrel +minstrel +minstrelsi +mint +mint +minut +minut +minut +minx +mio +mir +mirabl +miracl +miracl +miracul +miranda +mire +mirror +mirror +mirth +mirth +miri +mi +misadventur +misadventur +misanthropo +misappli +misbecam +misbecom +misbecom +misbegot +misbegotten +misbeliev +misbeliev +misbhav +miscal +miscal +miscarri +miscarri +miscarri +miscarri +mischanc +mischanc +mischief +mischief +mischiev +misconceiv +misconst +misconst +misconstruct +misconstru +misconstru +miscreant +miscreat +misde +misde +misdemean +misdemeanour +misdoubt +misdoubteth +misdoubt +misenum +miser +miser +miser +misericord +miseri +miser +miseri +misfortun +misfortun +misgiv +misgiv +misgiv +misgovern +misgovern +misgraf +misguid +mishap +mishap +misheard +misinterpret +mislead +mislead +mislead +mislead +misl +mislik +misord +misplac +misplac +misplac +mispri +mispris +mispris +mispriz +misproud +misquot +misreport +miss +miss +miss +misshap +misshapen +missheath +miss +missingli +mission +missiv +missiv +misspok +mist +mista +mistak +mistak +mistaken +mistak +mistaketh +mistak +mistak +mistemp +mistemp +misterm +mist +misthink +misthought +mistleto +mistook +mistread +mistress +mistress +mistresss +mistriship +mistrust +mistrust +mistrust +mistrust +mist +misti +misu +misus +misus +misus +mite +mithrid +mitig +mitig +mix +mix +mixtur +mixtur +mm +mnd +moan +moan +moat +moat +mobl +mock +mockabl +mocker +mockeri +mocker +mockeri +mock +mock +mockvat +mockwat +model +modena +moder +moder +moder +modern +modest +modesti +modestli +modesti +modicum +modo +modul +moe +moi +moieti +moist +moisten +moistur +moldwarp +mole +molehil +mole +molest +molest +mollif +molli +molten +molto +mome +moment +momentari +mome +mon +monachum +monarch +monarchi +monarch +monarcho +monarch +monarchi +monast +monasteri +monast +mondai +mond +monei +monei +mong +monger +monger +mong +mongrel +mongrel +mongst +monk +monkei +monkei +monk +monmouth +monopoli +mon +monsieur +monsieur +monster +monster +monstrou +monstrous +monstrous +monstruos +montacut +montag +montagu +montagu +montano +montant +montez +montferrat +montgomeri +month +monthli +month +montjoi +monument +monument +monument +mood +mood +moodi +moon +moonbeam +moonish +moonlight +moon +moonshin +moonshin +moor +moorfield +moor +moorship +mop +mope +mope +mop +mopsa +moral +moral +moral +moral +mordak +more +moreov +more +morgan +mori +morisco +morn +morn +morn +morocco +morri +morrow +morrow +morsel +morsel +mort +mortal +mortal +mortal +mortal +mortar +mortgag +mortifi +mortifi +mortim +mortim +morti +mortis +morton +mose +moss +mossgrown +most +mote +moth +mother +mother +moth +motion +motionless +motion +motiv +motiv +motlei +mot +mought +mould +mould +mouldeth +mould +mouldi +moult +moulten +mounch +mounseur +mounsieur +mount +mountain +mountain +mountain +mountain +mountain +mountant +mountanto +mountebank +mountebank +mount +mounteth +mount +mount +mourn +mourn +mourner +mourner +mourn +mournfulli +mourn +mourningli +mourn +mourn +mou +mous +mousetrap +mous +mouth +mouth +mouth +mov +movabl +move +moveabl +moveabl +move +mover +mover +move +moveth +move +movingli +movousu +mow +mowbrai +mower +mow +mow +moi +moi +moys +mr +much +muck +mud +mud +muddi +muddi +muffin +muffl +muffl +muffl +muffler +muffl +mugger +mug +mulberri +mulberri +mule +mule +mulet +mulier +mulier +muliteu +mull +mulmutiu +multipli +multipli +multipli +multipot +multitud +multitud +multitudin +mum +mumbl +mumbl +mummer +mummi +mun +munch +muniment +munit +murd +murder +murder +murder +murder +murder +murder +murder +mure +murk +murkiest +murki +murmur +murmur +murmur +murrain +murrai +murrion +murther +murther +murther +murther +murther +murther +mu +muscadel +muscovit +muscovit +muscovi +muse +muse +mush +mushroom +music +music +musician +musician +music +muse +muse +musk +musket +musket +musko +muss +mussel +mussel +must +mustachio +mustard +mustardse +muster +muster +muster +musti +mutabl +mutabl +mutat +mutat +mute +mute +mutest +mutin +mutin +mutin +mutin +mutini +mutin +mutini +mutiu +mutter +mutter +mutton +mutton +mutual +mutual +mutual +muzzl +muzzl +muzzl +mv +mww +my +mynheer +myrmidon +myrmidon +myrtl +myself +myst +mysteri +mysteri +n +nag +nage +nag +naiad +nail +nail +nak +nake +naked +nal +nam +name +name +nameless +name +name +namest +name +nan +nanc +nap +nape +nape +napkin +napkin +napl +napless +nap +nap +narbon +narcissu +narin +narrow +narrowli +naso +nasti +nathaniel +natif +nation +nation +nativ +nativ +natur +natur +natur +natur +natur +natur +natur +natu +naught +naughtili +naughti +navarr +nave +navel +navig +navi +nai +nayward +nayword +nazarit +ne +neaf +neamnoin +neanmoin +neapolitan +neapolitan +near +nearer +nearest +nearli +near +neat +neatli +neb +nebour +nebuchadnezzar +nec +necessari +necessarili +necessari +necess +necess +necess +neck +necklac +neck +nectar +ned +nedar +need +need +needer +need +needful +need +needl +needl +needless +needli +need +needi +neer +neez +nefa +negat +neg +neg +neglect +neglect +neglect +neglectingli +neglect +neglig +neglig +negoti +negoti +negro +neigh +neighbor +neighbour +neighbourhood +neighbour +neighbourli +neighbour +neigh +neigh +neither +nell +nemean +nemesi +neoptolemu +nephew +nephew +neptun +ner +nereid +nerissa +nero +nero +ner +nerv +nerv +nervii +nervi +nessu +nest +nestor +nest +net +nether +netherland +net +nettl +nettl +nettl +neuter +neutral +nev +never +nevil +nevil +new +newborn +newer +newest +newgat +newli +new +new +newsmong +newt +newt +next +nibbl +nicanor +nice +nice +nice +nicer +niceti +nichola +nick +nicknam +nick +niec +niec +niggard +niggard +niggardli +nigh +night +nightcap +nightcap +night +nightgown +nightingal +nightingal +nightli +nightmar +night +nightwork +nihil +nile +nill +nilu +nimbl +nimbl +nimbler +nimbl +nine +nineteen +ning +ningli +ninni +ninth +ninu +niob +niob +nip +nipp +nip +nippl +nip +nit +nly +nnight +nnight +no +noah +nob +nobil +nobi +nobl +nobleman +noblemen +nobl +nobler +nobl +nobless +noblest +nobli +nobodi +noce +nod +nod +nod +noddl +noddl +noddi +nod +noe +noint +noi +nois +noiseless +noisemak +nois +noisom +nole +nomin +nomin +nomin +nominativo +non +nonag +nonc +none +nonino +nonni +nonpareil +nonsuit +noni +nook +nook +noon +noondai +noontid +nor +norberi +norfolk +norman +normandi +norman +north +northampton +northamptonshir +northerli +northern +northgat +northumberland +northumberland +northward +norwai +norwai +norwegian +norweyan +no +nose +nosegai +noseless +nose +noster +nostra +nostril +nostril +not +notabl +notabl +notari +notch +note +notebook +note +notedli +note +notest +noteworthi +noth +noth +notic +notifi +note +notion +notori +notori +notr +notwithstand +nought +noun +noun +nourish +nourish +nourish +nourish +nourisheth +nourish +nourish +nou +novel +novelti +novelti +noverb +novi +novic +novic +novum +now +nowher +noyanc +ns +nt +nubibu +numa +numb +number +number +number +numberless +number +numb +nun +nuncio +nuncl +nunneri +nun +nuntiu +nuptial +nur +nurs +nurs +nurser +nurseri +nurs +nurseth +nursh +nurs +nurtur +nurtur +nut +nuthook +nutmeg +nutmeg +nutriment +nut +nutshel +ny +nym +nymph +nymph +o +oak +oaken +oak +oar +oar +oatcak +oaten +oath +oathabl +oath +oat +ob +obduraci +obdur +obedi +obedi +obeis +oberon +obei +obei +obei +obei +obidicut +object +object +object +object +oblat +oblat +oblig +oblig +oblig +obliqu +oblivion +oblivi +obloqui +obscen +obscen +obscur +obscur +obscur +obscur +obscur +obscur +obscur +obsequi +obsequi +obsequi +observ +observ +observ +observ +observ +observ +observ +observ +observ +observ +observ +observ +observingli +obsqu +obstacl +obstacl +obstinaci +obstin +obstin +obstruct +obstruct +obstruct +obtain +obtain +obtain +occas +occas +occid +occident +occult +occupat +occup +occup +occupi +occupi +occupi +occurr +occurr +occurr +ocean +ocean +octavia +octaviu +ocular +od +odd +oddest +oddli +odd +od +od +odiou +odorifer +odor +odour +odour +od +oeillad +oe +oeuvr +of +ofephesu +off +offal +offenc +offenc +offenc +offend +offend +offendendo +offend +offend +offendeth +offend +offendress +offend +offens +offenseless +offens +offens +offer +offer +offer +offer +offer +offert +offic +offic +offic +offic +offic +offic +offici +offici +offspr +oft +often +often +oftentim +oh +oil +oil +oili +old +oldcastl +olden +older +oldest +old +oliv +oliv +oliv +oliv +olivia +olympian +olympu +oman +oman +omen +omin +omiss +omit +omitt +omit +omit +omn +omn +omnipot +on +onc +on +on +oney +ongl +onion +onion +onli +onset +onward +onward +oo +ooz +ooz +oozi +op +opal +op +open +open +open +openli +open +open +oper +oper +oper +oper +oper +op +oph +ophelia +opinion +opinion +opportun +opportun +opportun +oppo +oppos +oppos +opposeless +oppos +oppos +oppos +oppos +opposit +opposit +opposit +opposit +oppress +oppress +oppress +oppresseth +oppress +oppress +oppressor +opprest +opprobri +oppugn +opul +opul +or +oracl +oracl +orang +orat +orat +orat +oratori +orb +orb +orb +orchard +orchard +ord +ordain +ordain +ordain +order +order +order +orderless +orderli +order +ordin +ordin +ordinari +ordinari +ordnanc +ord +ordur +or +organ +organ +orgil +orient +orifex +origin +origin +orison +ork +orlando +orld +orlean +ornament +ornament +orod +orphan +orphan +orpheu +orsino +ort +orthographi +ort +oscorbidulcho +osier +osier +osprei +osr +osric +ossa +ost +ostent +ostentar +ostent +ostent +ostler +ostler +ostrich +osw +oswald +othello +other +otherg +other +otherwher +otherwhil +otherwis +otter +ottoman +ottomit +oubli +ouch +ought +oui +ounc +ounc +ouph +our +our +ourself +ourselv +ousel +out +outbid +outbrav +outbrav +outbreak +outcast +outcri +outcri +outdar +outdar +outdar +outdon +outfac +outfac +outfac +outfac +outfli +outfrown +outgo +outgo +outgrown +outjest +outlaw +outlawri +outlaw +outliv +outliv +outliv +outliv +outlook +outlustr +outpriz +outrag +outrag +outrag +outran +outright +outroar +outrun +outrun +outrun +outscold +outscorn +outsel +outsel +outsid +outsid +outspeak +outsport +outstar +outstai +outstood +outstretch +outstretch +outstrik +outstrip +outstrip +outswear +outvenom +outward +outwardli +outward +outwear +outweigh +outwent +outworn +outworth +oven +over +overaw +overbear +overblown +overboard +overbold +overborn +overbulk +overbui +overcam +overcast +overcharg +overcharg +overcom +overcom +overdon +overearnest +overfar +overflow +overflown +overgl +overgo +overgon +overgorg +overgrown +overhead +overhear +overheard +overhold +overjoi +overkind +overland +overleath +overl +overlook +overlook +overlook +overmast +overmount +overmuch +overpass +overp +overp +overplu +overrul +overrun +overscutch +overset +overshad +overshin +overshin +overshot +oversight +overspread +overstain +overswear +overt +overta +overtak +overtaketh +overthrow +overthrown +overthrow +overtook +overtopp +overtur +overturn +overwatch +overween +overween +overweigh +overwhelm +overwhelm +overworn +ovid +ovidiu +ow +ow +ow +owedst +owen +ow +owest +oweth +ow +owl +owl +own +owner +owner +own +own +owi +ox +oxen +oxford +oxfordshir +oxlip +oy +oyster +p +pabbl +pabylon +pac +pace +pace +pace +pacifi +pacifi +pace +pack +packet +packet +packhors +pack +pack +pack +packthread +pacoru +paction +pad +paddl +paddl +paddock +padua +pagan +pagan +page +pageant +pageant +page +pah +paid +pail +pail +pail +pain +pain +pain +painfulli +pain +paint +paint +painter +paint +paint +paint +pair +pair +pair +pajock +pal +palabra +palac +palac +palamed +palat +palat +palatin +palat +pale +pale +pale +paler +pale +palestin +palfrei +palfrei +palisado +pall +pallabri +palla +pallet +palm +palmer +palmer +palm +palmi +palpabl +palsi +palsi +palsi +palt +palter +paltri +pali +pamp +pamper +pamphlet +pan +pancack +pancak +pancak +pandar +pandar +pandaru +pander +panderli +pander +pandulph +panel +pang +pang +pang +pannier +pannonian +pansa +pansi +pant +pantaloon +pant +pantheon +panther +panthino +pant +pantingli +pantler +pantri +pant +pap +papal +paper +paper +paphlagonia +papho +papist +pap +par +parabl +paracelsu +paradis +paradox +paradox +paragon +paragon +parallel +parallel +paramour +paramour +parapet +paraquito +parasit +parasit +parca +parcel +parcel +parcel +parch +parch +parch +parchment +pard +pardon +pardona +pardon +pardon +pardon +pardonn +pardonn +pardonnez +pardon +pare +pare +parel +parent +parentag +parent +parfect +pare +pare +pari +parish +parishion +parisian +paritor +park +park +parl +parler +parl +parlei +parlez +parliament +parlor +parlour +parlou +parmac +parol +parricid +parricid +parrot +parrot +parslei +parson +part +partak +partaken +partak +partak +part +parthia +parthian +parthian +parti +partial +partial +partial +particip +particip +particl +particular +particular +particular +particularli +particular +parti +part +partisan +partisan +partit +partizan +partlet +partli +partner +partner +partridg +part +parti +pa +pash +pash +pash +pass +passabl +passado +passag +passag +passant +pass +passeng +passeng +pass +passeth +pass +passio +passion +passion +passion +passion +passiv +passport +passi +past +past +pastern +pasti +pastim +pastim +pastor +pastor +pastor +pastri +pastur +pastur +pasti +pat +patai +patch +patcheri +patch +pate +pate +patent +patent +patern +pate +path +pathet +path +pathwai +pathwai +patienc +patient +patient +patient +patin +patrician +patrician +patrick +patrimoni +patroclu +patron +patronag +patro +patron +patrum +patter +pattern +pattern +pattl +pauca +pauca +paul +paulina +paunch +paunch +paus +pauser +paus +pausingli +pauvr +pav +pave +pavement +pavilion +pavilion +pavin +paw +pawn +pawn +paw +pax +pai +payest +pai +payment +payment +pai +paysan +paysan +pe +peac +peaceabl +peaceabl +peac +peacemak +peac +peach +peach +peacock +peacock +peak +peak +peal +peal +pear +peard +pearl +pearl +pear +pea +peasant +peasantri +peasant +peascod +peas +peaseblossom +peat +peaten +peat +pebbl +pebbl +pebbl +peck +peck +peculiar +pecu +pedant +pedant +pedascul +pede +pedest +pedigre +pedlar +pedlar +pedro +ped +peel +peep +peep +peep +peep +peer +peereth +peer +peerless +peer +peesel +peevish +peevishli +peflur +peg +pegasu +peg +peis +peis +peiz +pelf +pelican +pelion +pell +pella +pellet +peloponnesu +pelt +pelt +pembrok +pen +penalti +penalti +penanc +penc +pencil +pencil +pencil +pendant +pendent +pendragon +pendul +penelop +penetr +penetr +penetr +penit +penit +penitenti +penit +penit +penker +penknif +penn +pen +pen +pennon +penni +pennyworth +pennyworth +pen +pens +pension +pension +pensiv +pensiv +pensiv +pent +pentecost +penthesilea +penthous +penuri +penuri +peopl +peopl +peopl +peopl +pepin +pepper +peppercorn +pepper +per +peradventur +peradventur +perceiv +perceiv +perceiv +perceiv +perceiveth +perch +perchanc +perci +percuss +perci +perdi +perdita +perdit +perdonato +perdu +perdur +perdur +perdi +pere +peregrin +peremptorili +peremptori +perfect +perfect +perfect +perfectest +perfect +perfect +perfectli +perfect +perfidi +perfidi +perforc +perform +perform +perform +perform +perform +perform +perform +perform +perfum +perfum +perfum +perfum +perfum +perg +perhap +periapt +perigort +perigouna +peril +peril +peril +period +period +perish +perish +perishest +perisheth +perish +periwig +perjur +perjur +perjur +perjuri +perjuri +perk +perk +permafoi +perman +permiss +permiss +permit +permit +pernici +pernici +peror +perpend +perpendicular +perpendicularli +perpetu +perpetu +perpetu +perplex +perplex +perplex +per +persecut +persecut +persecutor +perseu +persev +persever +persev +persia +persian +persist +persist +persist +persist +persist +person +persona +personag +personag +person +person +person +person +person +person +person +perspect +perspect +perspect +perspicu +persuad +persuad +persuad +persuad +persuas +persuas +pert +pertain +pertain +pertain +pertaunt +pertin +pertli +perturb +perturb +perturb +perturb +peru +perus +perus +perus +perus +pervers +pervers +pervers +pervert +pervert +peseech +pest +pester +pestifer +pestil +pestil +pet +petar +peter +petit +petit +petitionari +petition +petition +petit +peto +petrarch +petruchio +petter +petticoat +petticoat +petti +pettish +pettito +petti +peu +pew +pewter +pewter +phaethon +phaeton +phantasim +phantasim +phantasma +pharamond +pharaoh +pharsalia +pheasant +pheazar +phebe +phebe +pheebu +pheez +phibbu +philadelpho +philario +philarmonu +philemon +philip +philippan +philipp +philippi +phillida +philo +philomel +philomela +philosoph +philosoph +philosoph +philosophi +philostr +philotu +phlegmat +phoeb +phoebu +phoenicia +phoenician +phoenix +phorbu +photinu +phrase +phraseless +phrase +phrygia +phrygian +phrynia +physic +physic +physician +physician +physic +pia +pibbl +pibl +picardi +pick +pickax +pickax +pickbon +pick +picker +pick +pickl +picklock +pickpurs +pick +pickt +pickthank +pictur +pictur +pictur +pictur +pid +pie +piec +piec +piec +piec +pi +pied +pier +pierc +pierc +pierc +pierc +pierceth +pierc +pierci +pier +pi +pieti +pig +pigeon +pigeon +pight +pigmi +pigrogromitu +pike +pike +pil +pilat +pilat +pilcher +pile +pile +pilf +pilfer +pilgrim +pilgrimag +pilgrim +pill +pillag +pillag +pillar +pillar +pillicock +pillori +pillow +pillow +pill +pilot +pilot +pimpernel +pin +pinch +pinch +pinch +pinch +pindaru +pine +pine +pine +pinfold +pine +pinion +pink +pinn +pinnac +pin +pins +pint +pintpot +pion +pioneer +pioner +pioner +piou +pip +pipe +piper +piper +pipe +pipe +pippin +pippin +pirat +pirat +pisa +pisanio +pish +pismir +piss +piss +pistol +pistol +pit +pitch +pitch +pitcher +pitcher +pitchi +piteou +piteous +pitfal +pith +pithless +pithi +piti +piti +piti +piti +pitifulli +pitiless +pit +pittanc +pitti +pittikin +piti +piti +piu +plac +place +place +placentio +place +placeth +placid +place +plack +placket +placket +plagu +plagu +plagu +plagu +plagu +plagui +plain +plainer +plainest +plain +plain +plainli +plain +plain +plainsong +plaint +plaintiff +plaintiff +plaint +planch +planet +planetari +planet +plank +plant +plantag +plantagenet +plantagenet +plantain +plantat +plant +planteth +plant +plash +plashi +plast +plaster +plaster +plat +plate +plate +plate +platform +platform +plat +plat +plausibl +plausiv +plautu +plai +plai +player +player +playeth +playfellow +playfellow +playhous +plai +plai +plea +pleach +pleach +plead +plead +pleader +pleader +plead +plead +plea +pleasanc +pleasant +pleasantli +pleas +pleas +pleaser +pleaser +pleas +pleasest +pleaseth +pleas +pleasur +pleasur +plebeian +plebeii +pleb +pledg +pledg +plein +plenitud +plenteou +plenteous +plenti +plenti +plentifulli +plenti +pless +pless +pless +pliant +pli +pli +plight +plight +plighter +plod +plod +plodder +plod +plod +plood +ploodi +plot +plot +plot +plotter +plough +plough +ploughman +ploughmen +plow +plow +pluck +pluck +plucker +pluck +pluck +plue +plum +plume +plume +plume +plummet +plump +plumpi +plum +plung +plung +plung +plural +plurisi +plu +pluto +plutu +ply +po +pocket +pocket +pocket +pocki +podi +poem +poesi +poet +poetic +poetri +poet +poictier +poinard +poin +point +pointblank +point +point +point +poi +pois +pois +poison +poison +poison +poison +poison +poison +poke +poke +pol +polack +polack +poland +pold +pole +poleax +polecat +polecat +polemon +pole +poli +polici +polici +polish +polish +polit +politician +politician +politicli +polixen +poll +pollut +pollut +poloniu +poltroon +polus +polydamu +polydor +polyxena +pomand +pomegran +pomewat +pomfret +pomgarnet +pommel +pomp +pompeiu +pompei +pompion +pompou +pomp +pond +ponder +ponder +pond +poniard +poniard +pont +pontic +pontif +ponton +pooh +pool +pool +poop +poor +poorer +poorest +poorli +pop +pope +popedom +popiliu +popingai +popish +popp +poppi +pop +popular +popular +popul +porch +porch +pore +pore +pork +porn +porpentin +porridg +porring +port +portabl +portag +portal +portanc +portculli +portend +portend +portent +portent +portent +porter +porter +portia +portion +portli +portotartarossa +portrait +portraitur +port +portug +pose +posi +posi +posit +posit +posit +poss +possess +possess +possess +possesseth +possess +possess +possess +possessor +posset +posset +possibl +possibl +possibl +possibl +possit +post +post +post +posterior +posterior +poster +postern +postern +poster +posthors +posthors +posthumu +post +postmast +post +postscript +postur +postur +posi +pot +potabl +potat +potato +potato +potch +potenc +potent +potent +potenti +potent +potent +pothecari +pother +potion +potion +potpan +pot +potter +pot +pottl +pouch +poulter +poultic +poultnei +pouncet +pound +pound +pour +pourest +pour +pourquoi +pour +pout +poverti +pow +powd +powder +power +power +powerfulli +powerless +power +pox +poi +poysam +prabbl +practic +practic +practic +practic +practic +practic +practi +practis +practis +practis +practis +practis +practis +praeclarissimu +praemunir +praetor +praetor +prag +pragu +prain +prain +prai +prais +prais +prais +praisest +praiseworthi +prais +pranc +prank +prank +prat +prate +prate +prater +prate +prattl +prattler +prattl +prave +prawl +prawn +prai +prayer +prayer +prai +prai +pre +preach +preach +preacher +preach +preach +preachment +pread +preambul +preced +preced +preced +precept +precepti +precept +precinct +preciou +precious +precipic +precipit +precipit +precis +precis +precis +precisian +precor +precurs +precursor +predeceas +predecessor +predecessor +predestin +predica +predict +predict +predict +predomin +predomin +predomin +preech +preemin +prefac +prefer +prefer +prefer +preferr +preferreth +prefer +prefer +prefigur +prefix +prefix +preform +pregnanc +pregnant +pregnantli +prejud +prejudic +prejudici +prelat +premedit +premedit +premis +premis +prenez +prenomin +prentic +prentic +preordin +prepar +prepar +prepar +prepar +prepar +preparedli +prepar +prepar +prepost +preposter +preposter +prerogatif +prerog +prerogativ +presag +presag +presag +presageth +presag +prescienc +prescrib +prescript +prescript +prescript +prescript +presenc +presenc +present +present +present +present +present +presenteth +present +present +present +present +preserv +preserv +preserv +preserv +preserv +preserv +preserv +preserv +presid +press +press +presser +press +press +pressur +pressur +prest +prester +presum +presum +presum +presumpt +presumptu +presuppo +pret +pretenc +pretenc +pretend +pretend +pretend +pretens +pretext +pretia +prettier +prettiest +prettili +pretti +pretti +prevail +prevail +prevaileth +prevail +prevail +prevail +prevent +prevent +prevent +prevent +prevent +prei +prey +prei +priam +priami +priamu +pribbl +price +prick +prick +pricket +prick +prick +pricksong +pride +pride +pridg +prie +pri +prief +pri +priest +priesthood +priest +prig +primal +prime +primer +primero +primest +primit +primo +primogen +primros +primros +primi +princ +princ +princ +princess +princip +princip +princip +principl +principl +princox +pring +print +print +print +printless +print +prioress +priori +prioriti +priori +priscian +prison +prison +prison +prison +prisonni +prison +pristin +prith +prithe +privaci +privat +privat +privat +privilag +privileg +privileg +privileg +privileg +privilegio +privili +priviti +privi +priz +prize +prize +prizer +prize +prizest +prize +pro +probabl +probal +probat +proce +proceed +proceed +proceed +proceed +proce +process +process +proclaim +proclaim +proclaimeth +proclaim +proclam +proclam +proconsul +procrastin +procreant +procreant +procreat +procru +proculeiu +procur +procur +procur +procur +procur +procur +prodig +prodig +prodig +prodig +prodigi +prodigi +prodigi +prodigi +proditor +produc +produc +produc +produc +produc +profac +profan +profan +profan +profan +profan +profan +profan +profan +profess +profess +profess +profess +profess +professor +proffer +proffer +proffer +proffer +profici +profit +profit +profit +profit +profit +profitless +profit +profound +profoundest +profoundli +progenitor +progeni +progn +prognost +prognost +progress +progress +prohibit +prohibit +project +project +project +prolixi +prolix +prologu +prologu +prolong +prolong +promethean +prometheu +promi +promis +promis +promis +promiseth +promis +promontori +promot +promot +prompt +prompt +promptement +prompter +prompt +prompt +promptur +promulg +prone +prononc +prononcez +pronoun +pronounc +pronounc +pronounc +pronounc +pronoun +proof +proof +prop +propag +propag +propend +propens +proper +proper +properli +properti +properti +properti +propheci +propheci +prophesi +prophesi +prophesi +prophesi +prophet +prophetess +prophet +prophet +prophet +propinqu +propont +proport +proportion +proport +propo +propos +propos +propos +propos +propos +proposit +proposit +propound +propp +propr +proprieti +prop +propugn +prorogu +prorogu +proscript +proscript +prose +prosecut +prosecut +proselyt +proserpina +prosp +prospect +prosper +prosper +prospero +prosper +prosper +prosper +prostitut +prostrat +protect +protect +protect +protector +protector +protectorship +protectress +protect +protest +protest +protest +protest +protest +protest +protest +proteu +protheu +protract +protract +proud +prouder +proudest +proudlier +proudli +proud +prov +provand +prove +prove +provend +proverb +proverb +prove +proveth +provid +provid +provid +provid +provid +provid +provid +provinc +provinc +provinci +prove +provis +proviso +provoc +provok +provok +provok +provok +provok +provoketh +provok +provost +prowess +prudenc +prudent +prun +prune +prune +prune +pry +pry +psalm +psalmist +psalm +psalteri +ptolemi +ptolemi +public +publican +public +publicli +publicola +publish +publish +publish +publish +publiu +pucel +puck +pudder +pud +pud +puddl +puddl +pudenc +pueritia +puff +puf +puff +pug +pui +puissanc +puissant +puke +puke +pulcher +pule +pull +puller +pullet +pull +pull +pulpit +pulpit +pulpit +puls +pulsidg +pump +pumpion +pump +pun +punch +punish +punish +punish +punish +punish +punk +punto +puni +pupil +pupil +puppet +puppet +puppi +puppi +pur +purblind +purcha +purchas +purchas +purchas +purchaseth +purchas +pure +pure +purer +purest +purg +purgat +purg +purgatori +purg +purg +purger +purg +purifi +purifi +puritan +puriti +purlieu +purpl +purpl +purpl +purport +purpo +purpos +purpos +purpos +purpos +purposeth +purpos +purr +pur +purs +pursent +purs +pursu +pursu +pursu +pursuer +pursu +pursuest +pursueth +pursu +pursuit +pursuiv +pursuiv +pursi +puru +purveyor +push +push +pusillanim +put +putrefi +putrifi +put +putter +put +puttock +puzzel +puzzl +puzzl +puzzl +py +pygmalion +pygmi +pygmi +pyramid +pyramid +pyramid +pyrami +pyramis +pyramu +pyrenean +pyrrhu +pythagora +qu +quadrangl +quae +quaff +quaf +quagmir +quail +quail +quail +quaint +quaintli +quak +quak +quak +qualif +qualifi +qualifi +qualifi +qualifi +qualit +qualiti +qualiti +qualm +qualmish +quam +quand +quando +quantiti +quantiti +quar +quarrel +quarrel +quarrel +quarrel +quarrel +quarrel +quarrelsom +quarri +quarri +quart +quarter +quarter +quarter +quarter +quart +quasi +quat +quatch +quai +que +quean +quea +queasi +queasi +queen +queen +quell +queller +quench +quench +quench +quenchless +quern +quest +questant +question +question +question +question +questionless +question +questrist +quest +queubu +qui +quick +quicken +quicken +quicker +quicklier +quickli +quick +quicksand +quicksand +quicksilverr +quid +quidditi +quiddit +quier +quiet +quieter +quietli +quiet +quietu +quill +quillet +quill +quilt +quinapalu +quinc +quinc +quintain +quintess +quintu +quip +quip +quir +quir +quirk +quirk +qui +quit +quit +quit +quittanc +quit +quit +quiver +quiver +quiver +quo +quod +quoif +quoint +quoit +quoit +quondam +quoniam +quot +quot +quot +quoth +quotidian +r +rabbit +rabbl +rabblement +race +rack +racker +racket +racket +rack +rack +radianc +radiant +radish +rafe +raft +rag +rage +rage +rageth +ragg +rag +ragged +rage +ragozin +rag +rah +rail +rail +railer +railest +raileth +rail +rail +raiment +rain +rainbow +raineth +rain +rainold +rain +raini +rai +rais +rais +rais +rais +raisin +rak +rake +raker +rake +ral +rald +ralph +ram +rambur +ramm +rampallian +rampant +ramp +rampir +ramp +ram +ramsei +ramston +ran +ranc +rancor +rancor +rancour +random +rang +rang +rang +ranger +rang +rang +rank +ranker +rankest +rank +rankl +rankli +rank +rank +ransack +ransack +ransom +ransom +ransom +ransomless +ransom +rant +rant +rap +rape +rape +rapier +rapier +rapin +rap +rapt +raptur +raptur +rar +rare +rare +rare +rarer +rarest +rariti +rariti +rascal +rascalliest +rascal +rascal +rase +rash +rasher +rashli +rash +rat +ratcatch +ratcliff +rate +rate +rate +rate +rather +ratherest +ratifi +ratifi +ratifi +rate +ration +ratolorum +rat +ratsban +rattl +rattl +rattl +ratur +raught +rav +rave +ravel +raven +raven +raven +raven +ravenspurgh +rave +ravin +rave +ravish +ravish +ravish +ravish +ravish +raw +rawer +rawli +raw +rai +rai +rai +raz +raze +raze +raze +razeth +raze +razor +razor +razor +razur +re +reach +reach +reacheth +reach +read +reader +readiest +readili +readi +read +readin +read +readi +real +realli +realm +realm +reap +reaper +reap +reap +rear +rear +rearward +reason +reason +reason +reason +reason +reasonless +reason +reav +rebat +rebato +rebeck +rebel +rebel +rebel +rebellion +rebelli +rebel +rebound +rebuk +rebuk +rebuk +rebuk +rebuk +rebu +recal +recant +recant +recant +recant +receipt +receipt +receiv +receiv +receiv +receiv +receiv +receivest +receiveth +receiv +receptacl +rechat +reciproc +reciproc +recit +recit +reciterai +reck +reck +reckless +reckon +reckon +reckon +reckon +reck +reclaim +reclaim +reclus +recogniz +recogniz +recoil +recoil +recollect +recomfort +recomfortur +recommend +recommend +recommend +recompen +recompens +reconcil +reconcil +reconcil +reconcil +reconcil +reconcil +reconcili +record +record +record +record +record +record +recount +recount +recount +recount +recount +recours +recov +recov +recover +recov +recoveri +recov +recoveri +recreant +recreant +recreat +recreat +rectifi +rector +rectorship +recur +recur +red +redbreast +redder +reddest +rede +redeem +redeem +redeem +redeem +redeem +redeliv +redempt +redim +red +redoubl +redoubt +redound +redress +redress +redress +reduc +reechi +reed +reed +reek +reek +reek +reeki +reel +reeleth +reel +reel +refel +refer +refer +referr +refer +refigur +refin +refin +reflect +reflect +reflect +reflex +reform +reform +reform +refractori +refrain +refresh +refresh +reft +reft +refug +refu +refus +refus +refus +refusest +refus +reg +regal +regalia +regan +regard +regard +regard +regardfulli +regard +regard +regener +regent +regentship +regia +regiment +regiment +regina +region +region +regist +regist +regist +regreet +regreet +regress +reguerdon +regular +rehear +rehears +rehears +reign +reign +reignier +reign +reign +rein +reinforc +reinforc +reinforc +rein +reiter +reject +reject +rejoic +rejoic +rejoic +rejoiceth +rejoic +rejoicingli +rejoindur +rejourn +rel +relaps +relat +relat +relat +relat +rel +relea +releas +releas +releas +relent +relent +relent +relianc +relic +relief +reliev +reliev +reliev +reliev +reliev +religion +religion +religi +religi +relinquish +reliqu +reliquit +relish +relum +reli +reli +remain +remaind +remaind +remain +remaineth +remain +remain +remark +remark +remedi +remedi +remedi +remedi +rememb +rememb +rememb +rememb +remembr +remembranc +remembr +remercimen +remiss +remiss +remiss +remit +remnant +remnant +remonstr +remors +remors +remorseless +remot +remot +remov +remov +remov +removed +remov +remov +remov +remuner +remuner +renc +rend +render +render +render +rendezv +renegado +reneg +reneg +renew +renew +renewest +renounc +renounc +renounc +renowm +renown +renown +rent +rent +repaid +repair +repair +repair +repair +repass +repast +repastur +repai +repai +repai +repeal +repeal +repeal +repeat +repeat +repeat +repeat +repel +repent +repent +repent +repent +repent +repent +repetit +repetit +repin +repin +repin +replant +replenish +replenish +replet +replic +repli +repli +repliest +repli +repli +report +report +report +reportest +report +reportingli +report +repos +repos +reposeth +repos +repossess +reprehend +reprehend +reprehend +repres +repres +repriev +repriev +repris +reproach +reproach +reproach +reproachfulli +reprob +reprob +reproof +reprov +reprov +reprov +reprov +reprov +repugn +repugn +repugn +repuls +repuls +repurcha +repur +reput +reput +reput +reputeless +reput +reput +request +request +request +request +requiem +requir +requir +requir +requir +requireth +requir +requisit +requisit +requit +requit +requit +requit +requit +rer +rere +rer +rescu +rescu +rescu +rescu +rescu +resembl +resembl +resembl +resembl +resembleth +resembl +reserv +reserv +reserv +reserv +reserv +resid +resid +resid +resid +resid +residu +resign +resign +resist +resist +resist +resist +resist +resolut +resolut +resolut +resolut +resolv +resolv +resolv +resolvedli +resolv +resolveth +resort +resort +resound +resound +respeak +respect +respect +respect +respect +respect +respect +respic +respit +respit +respons +respos +ress +rest +rest +resteth +rest +rest +restitut +restless +restor +restor +restor +restor +restor +restor +restor +restrain +restrain +restrain +restrain +restraint +rest +resti +resum +resum +resum +resurrect +retail +retail +retain +retain +retain +retel +retent +retent +retinu +retir +retir +retir +retir +retir +retir +retold +retort +retort +retourn +retract +retreat +retrograd +ret +return +return +returnest +returneth +return +return +revania +reveal +reveal +revel +revel +revel +revel +revel +revel +revelri +revel +reveng +reveng +reveng +reveng +reveng +reveng +reveng +reveng +reveng +revengingli +revenu +revenu +reverb +reverber +reverb +reverenc +rever +reverend +rever +rever +rever +revers +revers +revert +review +reviewest +revil +revil +revisit +reviv +reviv +reviv +reviv +revok +revok +revok +revolt +revolt +revolt +revolt +revolut +revolut +revolv +revolv +reward +reward +reward +reward +reward +reword +reword +rex +rei +reynaldo +rford +rful +rfull +rhapsodi +rheim +rhenish +rhesu +rhetor +rheum +rheumat +rheum +rheumi +rhinocero +rhode +rhodop +rhubarb +rhym +rhyme +rhymer +rhyme +rhyme +rialto +rib +ribald +riband +riband +ribaudr +ribb +rib +ribbon +ribbon +rib +rice +rich +richard +richer +rich +richest +richli +richmond +richmond +rid +riddanc +ridden +riddl +riddl +riddl +ride +rider +rider +ride +ridest +rideth +ridg +ridg +ridicul +ride +rid +rien +ri +rifl +rift +rift +rig +rigg +riggish +right +righteou +righteous +right +rightfulli +rightli +right +rigol +rigor +rigor +rigour +ril +rim +rin +rinaldo +rind +ring +ring +ringlead +ringlet +ring +ringwood +riot +rioter +riot +riotou +riot +rip +ripe +ripe +ripen +ripen +ripe +ripen +ripen +riper +ripest +ripe +ripp +rip +rise +risen +rise +riseth +rish +rise +rite +rite +rivag +rival +rival +rival +rival +rive +rive +rivel +river +river +rivet +rivet +rivet +rivo +rj +rless +road +road +roam +roam +roan +roar +roar +roarer +roar +roar +roast +roast +rob +roba +roba +robb +rob +robber +robber +robberi +rob +robe +robe +robert +robe +robin +rob +robusti +rochest +rochford +rock +rock +rocki +rod +rode +roderigo +rod +roe +roe +roger +rogero +rogu +rogueri +rogu +roguish +roi +roist +roll +roll +roll +roll +rom +romag +roman +romano +romano +roman +rome +romeo +romish +rondur +ronyon +rood +roof +roof +rook +rook +rooki +room +room +root +root +rootedli +rooteth +root +root +rope +roperi +rope +rope +ro +rosalind +rosalinda +rosalind +rosalin +rosciu +rose +rose +rosemari +rosencrantz +rose +ross +rosi +rot +rote +rote +rother +rotherham +rot +rot +rotten +rotten +rot +rotund +rouen +rough +rougher +roughest +roughli +rough +round +round +roundel +rounder +roundest +round +roundli +round +roundur +rou +rous +rous +rousillon +rousli +roussi +rout +rout +rout +rove +rover +row +rowel +rowland +rowland +roi +royal +royal +royal +royalti +royalti +roynish +rs +rt +rub +rubb +rub +rubbish +rubi +rubiou +rub +rubi +rud +rudand +rudder +ruddi +ruddock +ruddi +rude +rude +rude +ruder +rudesbi +rudest +rudiment +rue +ru +ruff +ruffian +ruffian +ruffl +ruffl +ruff +rug +rugbi +rugemount +rug +ruin +ruinat +ruin +ruin +ruinou +ruin +rul +rule +rule +ruler +ruler +rule +rule +rumbl +ruminai +ruminat +rumin +rumin +rumin +rumin +rumor +rumour +rumour +rumour +rump +run +runag +runag +runawai +runawai +rung +runn +runner +runner +run +run +ruptur +ruptur +rural +rush +rush +rush +rushl +rushi +russet +russia +russian +russian +rust +rust +rustic +rustic +rustic +rustl +rustl +rust +rusti +rut +ruth +ruth +ruthless +rutland +ruttish +ry +rye +ryth +s +sa +saba +sabbath +sabl +sabl +sack +sackbut +sackcloth +sack +sackerson +sack +sacrament +sacr +sacrif +sacrific +sacrific +sacrific +sacrifici +sacrif +sacrilegi +sacr +sad +sadder +saddest +saddl +saddler +saddl +sadli +sad +saf +safe +safeguard +safe +safer +safest +safeti +safeti +saffron +sag +sage +sagittari +said +saidst +sail +sail +sailmak +sailor +sailor +sail +sain +saint +saint +saintlik +saint +saith +sake +sake +sala +salad +salamand +salari +sale +salerio +salicam +saliqu +salisburi +sall +sallet +sallet +salli +sallow +salli +salmon +salmon +salt +salter +saltier +salt +saltpetr +salut +salut +salut +salut +salut +saluteth +salv +salvat +salv +salv +same +samingo +samp +sampir +sampl +sampler +sampson +samson +samson +sancta +sanctifi +sanctifi +sanctifi +sanctimoni +sanctimoni +sanctimoni +sanctiti +sanctiti +sanctuar +sanctuari +sand +sandal +sandbag +sand +sand +sandi +sandi +sang +sanguin +sangui +saniti +san +santrail +sap +sapient +sapit +sapless +sapl +sapphir +sapphir +saracen +sarcenet +sard +sardian +sardinia +sardi +sarum +sat +satan +satchel +sate +sate +satiat +satieti +satin +satir +satir +sati +satisfact +satisfi +satisfi +satisfi +satisfi +saturdai +saturdai +saturn +saturnin +saturninu +satyr +satyr +sauc +sauc +sauc +saucer +sauc +saucili +sauci +sauci +sauf +saunder +sav +savag +savag +savag +savageri +savag +save +save +save +save +saviour +savori +savour +savour +savour +savouri +savoi +saw +saw +sawest +sawn +sawpit +saw +sawyer +saxon +saxoni +saxton +sai +sayest +sai +sai +sai +sayst +sblood +sc +scab +scabbard +scab +scaffold +scaffoldag +scal +scald +scald +scald +scale +scale +scale +scale +scall +scalp +scalp +scali +scambl +scambl +scamel +scan +scandal +scandaliz +scandal +scandi +scann +scant +scant +scanter +scant +scantl +scant +scap +scape +scape +scape +scapeth +scar +scarc +scarc +scarciti +scare +scarecrow +scarecrow +scarf +scarf +scarf +scare +scarlet +scarr +scarr +scar +scaru +scath +scath +scath +scatt +scatter +scatter +scatter +scatter +scelera +scelerisqu +scene +scene +scent +scent +scept +scepter +sceptr +sceptr +sceptr +schedul +schedul +scholar +scholarli +scholar +school +schoolboi +schoolboi +schoolfellow +school +schoolmast +schoolmast +school +sciatica +sciatica +scienc +scienc +scimitar +scion +scion +scissor +scoff +scoffer +scof +scoff +scoggin +scold +scold +scold +sconc +scone +scope +scope +scorch +scorch +score +score +score +score +scorn +scorn +scorn +scornfulli +scorn +scorn +scorpion +scorpion +scot +scotch +scotch +scotland +scot +scottish +scoundrel +scour +scour +scourg +scourg +scour +scout +scout +scowl +scrap +scrape +scrape +scrap +scratch +scratch +scratch +scream +scream +screech +screech +screen +screen +screw +screw +scribbl +scribbl +scribe +scribe +scrimer +scrip +scrippag +scriptur +scriptur +scriven +scroll +scroll +scroop +scrowl +scroyl +scrub +scrupl +scrupl +scrupul +scuffl +scuffl +scullion +scull +scum +scurril +scurril +scurril +scurvi +scuse +scut +scutcheon +scutcheon +scylla +scyth +scyth +scythia +scythian +sdeath +se +sea +seacoal +seafar +seal +seal +seal +seal +seam +seamen +seami +seaport +sear +searc +search +searcher +search +searcheth +search +sear +sea +seasick +seasid +season +season +season +seat +seat +seat +sebastian +second +secondarili +secondari +second +second +secreci +secret +secretari +secretari +secretli +secret +sect +sectari +sect +secundo +secur +secur +secur +secur +sedg +sedg +sedg +sedgi +sedit +sediti +seduc +seduc +seduc +seduc +seduc +see +seed +seed +seed +seed +seedsman +seein +see +seek +seek +seek +seel +seel +seeli +seem +seem +seemer +seemest +seemeth +seem +seemingli +seemli +seem +seen +seer +see +sees +seest +seeth +seeth +seeth +seet +segreg +seigneur +seigneur +seiz +seiz +seiz +seiz +seizeth +seiz +seizur +seld +seldom +select +seleucu +self +selfsam +sell +seller +sell +sell +selv +semblabl +semblabl +semblanc +semblanc +sembl +semi +semicircl +semirami +semper +semproniu +senat +senat +senat +send +sender +sendeth +send +send +seneca +senior +seniori +seni +sennet +senoi +sens +senseless +sens +sensibl +sensibl +sensual +sensual +sent +sentenc +sentenc +sentenc +sententi +sentinel +sentinel +separ +separ +separ +separ +separ +septentrion +sepulchr +sepulchr +sepulchr +sequel +sequenc +sequent +sequest +sequest +sequestr +sere +sereni +serg +sergeant +seriou +serious +sermon +sermon +serpent +serpentin +serpent +serpigo +serv +servant +servant +servant +serv +serv +server +serv +serveth +servic +servic +servic +servil +servil +serviliu +serv +servingman +servingmen +serviteur +servitor +servitor +servitud +sessa +session +session +sesto +set +setebo +set +setter +set +settl +settl +settlest +settl +sev +seven +sevenfold +sevennight +seventeen +seventh +seventi +sever +sever +sever +sever +sever +sever +sever +severest +sever +sever +severn +sever +sew +seward +sewer +sew +sex +sex +sexton +sextu +seymour +seyton +sfoot +sh +shackl +shackl +shade +shade +shadow +shadow +shadow +shadow +shadowi +shadi +shafalu +shaft +shaft +shag +shak +shake +shake +shaken +shake +shake +shale +shall +shalleng +shallow +shallowest +shallowli +shallow +shalt +sham +shambl +shame +shame +shame +shamefulli +shameless +shame +shamest +shame +shank +shank +shap +shape +shape +shapeless +shapen +shape +shape +shar +shard +shard +shard +share +share +sharer +share +share +shark +sharp +sharpen +sharpen +sharpen +sharper +sharpest +sharpli +sharp +sharp +shatter +shav +shave +shaven +shaw +she +sheaf +sheal +shear +shearer +shear +shearman +shear +sheath +sheath +sheath +sheath +sheath +sheav +sheav +shed +shed +shed +sheen +sheep +sheepcot +sheepcot +sheep +sheepskin +sheer +sheet +sheet +sheet +sheffield +shelf +shell +shell +shelt +shelter +shelter +shelv +shelv +shelvi +shent +shepherd +shepherd +shepherdess +shepherdess +shepherd +sher +sheriff +sherri +she +sheweth +shield +shield +shield +shift +shift +shift +shift +shill +shill +shin +shine +shine +shineth +shine +shin +shini +ship +shipboard +shipman +shipmast +shipmen +shipp +ship +ship +ship +shipt +shipwreck +shipwreck +shipwright +shipwright +shire +shirlei +shirt +shirt +shive +shiver +shiver +shiver +shoal +shoal +shock +shock +shod +shoe +shoe +shoemak +shoe +shog +shone +shook +shoon +shoot +shooter +shooti +shoot +shoot +shop +shop +shore +shore +shorn +short +shortcak +shorten +shorten +shorten +shorter +shortli +short +shot +shotten +shough +should +shoulder +shoulder +shoulder +shouldst +shout +shout +shout +shout +shov +shove +shovel +shovel +show +show +shower +shower +showest +show +shown +show +shred +shrew +shrewd +shrewdli +shrewd +shrewish +shrewishli +shrewish +shrew +shrewsburi +shriek +shriek +shriek +shriev +shrift +shrill +shriller +shrill +shrilli +shrimp +shrine +shrink +shrink +shrink +shriv +shrive +shriver +shrive +shrive +shroud +shroud +shroud +shroud +shrove +shrow +shrow +shrub +shrub +shrug +shrug +shrunk +shudd +shudder +shuffl +shuffl +shuffl +shuffl +shun +shunless +shunn +shun +shun +shun +shut +shut +shuttl +shy +shylock +si +sibyl +sibylla +sibyl +sicil +sicilia +sicilian +siciliu +sicil +sicili +siciniu +sick +sicken +sicken +sicker +sickl +sicklemen +sickli +sickli +sickli +sick +sicl +sicyon +side +side +side +sieg +sieg +sienna +si +siev +sift +sift +sigeia +sigh +sigh +sigh +sigh +sight +sight +sightless +sightli +sight +sign +signal +signet +signieur +signific +signific +signifi +signifi +signifi +signifi +signior +signiori +signior +signiori +signor +signori +sign +signum +silenc +silenc +silenc +silenc +silent +silent +siliu +silk +silken +silkman +silk +silliest +silli +sill +silli +silva +silver +silver +silverli +silvia +silviu +sima +simil +simil +simoi +simon +simoni +simp +simpcox +simpl +simpl +simpler +simpl +simplic +simpli +simular +simul +sin +sinc +sincer +sincer +sincer +sinel +sinew +sinew +sinew +sinewi +sin +sinfulli +sing +sing +sing +singer +sing +singeth +sing +singl +singl +singl +singli +sing +singular +singularit +singular +singular +singul +sinist +sink +sink +sink +sinn +sinner +sinner +sin +sinon +sin +sip +sip +sir +sire +siren +sirrah +sir +sist +sister +sisterhood +sisterli +sister +sit +sith +sithenc +sit +sit +situat +situat +situat +siward +six +sixpenc +sixpenc +sixpenni +sixteen +sixth +sixti +siz +size +size +sizzl +skain +skambl +skein +skelter +ski +skil +skilfulli +skill +skilless +skillet +skill +skill +skim +skimbl +skin +skinker +skinni +skin +skip +skipp +skipper +skip +skirmish +skirmish +skirr +skirt +skirt +skittish +skulk +skull +skull +sky +skyei +skyish +slab +slack +slackli +slack +slain +slake +sland +slander +slander +slander +slander +slander +slander +slander +slash +slaught +slaughter +slaughter +slaughter +slaughterman +slaughtermen +slaughter +slaughter +slave +slaver +slaveri +slave +slavish +slai +slayeth +slai +slai +sleav +sled +sleek +sleekli +sleep +sleeper +sleeper +sleepest +sleep +sleep +sleepi +sleev +sleev +sleid +sleid +sleight +sleight +slender +slender +slenderli +slept +slew +slewest +slice +slid +slide +slide +slide +slight +slight +slightest +slightli +slight +slight +slili +slime +slimi +sling +slink +slip +slipp +slipper +slipper +slipperi +slip +slish +slit +sliver +slobb +slomber +slop +slope +slop +sloth +sloth +slough +slovenli +slovenri +slow +slower +slowli +slow +slubber +slug +sluggard +sluggardiz +sluggish +sluic +slumb +slumber +slumber +slumberi +slunk +slut +slut +slutteri +sluttish +sluttish +sly +sly +smack +smack +smack +small +smaller +smallest +small +smalu +smart +smart +smartli +smatch +smatter +smear +smell +smell +smell +smelt +smil +smile +smile +smile +smilest +smilet +smile +smilingli +smirch +smirch +smit +smite +smite +smith +smithfield +smock +smock +smok +smoke +smoke +smoke +smoke +smoki +smooth +smooth +smooth +smoothli +smooth +smooth +smote +smoth +smother +smother +smother +smug +smulkin +smutch +snaffl +snail +snail +snake +snake +snaki +snap +snapp +snapper +snar +snare +snare +snarl +snarleth +snarl +snatch +snatcher +snatch +snatch +sneak +sneak +sneap +sneap +sneck +snip +snipe +snipt +snore +snore +snore +snort +snout +snow +snowbal +snow +snowi +snuff +snuff +snug +so +soak +soak +soak +soar +soar +soar +sob +sob +sober +soberli +sobrieti +sob +sociabl +societi +societi +sock +socrat +sod +sodden +soe +soever +soft +soften +soften +softer +softest +softli +soft +soil +soil +soilur +soit +sojourn +sol +sola +solac +solanio +sold +soldat +solder +soldest +soldier +soldier +soldiership +sole +sole +solem +solemn +solem +solemn +solemn +solemniz +solemn +solemn +solemnli +sole +solicit +solicit +solicit +solicit +solicit +solicitor +solicit +solid +solidar +solid +solinu +solitari +solomon +solon +solum +solu +solyman +some +somebodi +someon +somerset +somervil +someth +sometim +sometim +somev +somewhat +somewher +somewhith +somm +son +sonanc +song +song +sonnet +sonnet +sonnet +son +sont +sonti +soon +sooner +soonest +sooth +sooth +soother +sooth +soothsai +soothsay +sooti +sop +sophist +sophist +sophi +sop +sorcer +sorcer +sorceress +sorceri +sorceri +sore +sorel +sore +sorer +sore +sorrier +sorriest +sorrow +sorrow +sorrowest +sorrow +sorrow +sorrow +sorri +sort +sortanc +sort +sort +sort +sossiu +sot +soto +sot +sottish +soud +sought +soul +sould +soulless +soul +sound +sound +sounder +soundest +sound +soundless +soundli +sound +soundpost +sound +sour +sourc +sourc +sourest +sourli +sour +sou +sous +south +southam +southampton +southerli +southern +southward +southwark +southwel +souviendrai +sov +sovereign +sovereignest +sovereignli +sovereignti +sovereignvour +sow +sow +sowl +sowter +space +space +spaciou +spade +spade +spain +spak +spake +spakest +span +spangl +spangl +spaniard +spaniel +spaniel +spanish +spann +span +spar +spare +spare +spare +sparingli +spark +sparkl +sparkl +sparkl +spark +sparrow +sparrow +sparta +spartan +spavin +spavin +spawn +speak +speaker +speaker +speakest +speaketh +speak +speak +spear +speargrass +spear +special +special +special +specialti +specialti +specifi +specious +spectacl +spectacl +spectacl +spectat +spectatorship +specul +specul +specul +sped +speech +speech +speechless +speed +speed +speedier +speediest +speedili +speedi +speed +speed +speedi +speen +spell +spell +spell +spelt +spencer +spend +spendest +spend +spend +spendthrift +spent +sperato +sperm +spero +sperr +spher +sphere +sphere +sphere +spheric +spheri +sphinx +spice +spice +spiceri +spice +spider +spider +spi +spi +spieth +spightfulli +spigot +spill +spill +spill +spilt +spilth +spin +spinii +spinner +spinster +spinster +spire +spirit +spirit +spiritless +spirit +spiritu +spiritualti +spirt +spit +spital +spite +spite +spite +spite +spit +spit +spit +splai +spleen +spleen +spleen +spleeni +splendour +splenit +splinter +splinter +split +split +split +split +spoil +spoil +spok +spoke +spoken +spoke +spokesman +spong +spongi +spoon +spoon +sport +sport +sport +sportiv +sport +spot +spotless +spot +spot +spousal +spous +spout +spout +spout +sprag +sprang +sprat +sprawl +sprai +sprai +spread +spread +spread +spright +spright +sprightli +sprig +spring +spring +spring +springeth +springhalt +spring +spring +springtim +sprinkl +sprinkl +sprite +sprite +sprite +sprite +sprite +sprout +spruce +sprung +spun +spur +spurio +spurn +spurn +spurr +spurrer +spur +spur +spy +spy +squabbl +squadron +squadron +squand +squar +squar +squarer +squar +squash +squeak +squeak +squeal +squeal +squeez +squeez +squel +squier +squint +squini +squir +squir +squirrel +st +stab +stabb +stab +stab +stabl +stabl +stabl +stablish +stablish +stab +stack +staff +stafford +stafford +staffordshir +stag +stage +stage +stagger +stagger +stagger +stag +staid +staider +stain +stain +stain +staineth +stain +stainless +stain +stair +stair +stake +stake +stale +stale +stalk +stalk +stalk +stall +stall +stall +stamford +stammer +stamp +stamp +stamp +stanch +stanchless +stand +standard +standard +stander +stander +standest +standeth +stand +stand +staniel +stanlei +stanz +stanzo +stanzo +stapl +stapl +star +stare +stare +stare +stare +stare +stark +starkli +starlight +starl +starr +starri +star +start +start +start +startingli +startl +startl +start +starv +starv +starv +starvelackei +starvel +starveth +starv +state +stateli +state +state +statesman +statesmen +statiliu +station +statist +statist +statu +statu +statur +statur +statut +statut +stave +stave +stai +stai +stayest +stai +stai +stead +stead +steadfast +steadier +stead +steal +stealer +stealer +steal +steal +stealth +stealthi +steed +steed +steel +steel +steeli +steep +steep +steepl +steepl +steep +steepi +steer +steerag +steer +steer +stell +stem +stem +stench +step +stepdam +stephano +stephen +stepmoth +stepp +step +step +steril +steril +sterl +stern +sternag +sterner +sternest +stern +steterat +stew +steward +steward +stewardship +stew +stew +stick +stick +stickler +stick +stiff +stiffen +stiffli +stifl +stifl +stifl +stigmat +stigmat +stile +still +stiller +stillest +still +stilli +sting +sting +stingless +sting +stink +stink +stinkingli +stink +stint +stint +stint +stir +stirr +stir +stirrer +stirrer +stirreth +stir +stirrup +stirrup +stir +stitcheri +stitch +stithi +stithi +stoccado +stoccata +stock +stockfish +stock +stock +stockish +stock +stog +stog +stoic +stokesli +stol +stole +stolen +stolest +stomach +stomach +stomach +stomach +ston +stone +stonecutt +stone +stonish +stoni +stood +stool +stool +stoop +stoop +stoop +stop +stope +stopp +stop +stop +stop +stor +store +storehous +storehous +store +stori +storm +storm +storm +storm +stormi +stori +stoup +stoup +stout +stouter +stoutli +stout +stover +stow +stowag +stow +strachi +straggler +straggl +straight +straightest +straightwai +strain +strain +strain +strain +strait +strait +straiter +straitli +strait +strait +strand +strang +strang +strang +stranger +stranger +strangest +strangl +strangl +strangler +strangl +strangl +strappado +strap +stratagem +stratagem +stratford +strato +straw +strawberri +strawberri +straw +strawi +strai +strai +strai +streak +streak +stream +streamer +stream +stream +strech +street +street +strength +strengthen +strengthen +strengthless +strength +stretch +stretch +stretch +stretch +strew +strew +strew +strewment +stricken +strict +stricter +strictest +strictli +strictur +stride +stride +stride +strife +strife +strik +strike +striker +strike +strikest +strike +string +stringless +string +strip +stripe +stripl +stripl +stripp +strip +striv +strive +strive +strive +strok +stroke +stroke +strond +strond +strong +stronger +strongest +strongli +strook +strosser +strove +strown +stroi +struck +strucken +struggl +struggl +struggl +strumpet +strumpet +strumpet +strung +strut +strut +strut +strut +stubbl +stubborn +stubbornest +stubbornli +stubborn +stuck +stud +student +student +studi +studi +studiou +studious +stud +studi +studi +stuff +stuf +stuff +stumbl +stumbl +stumblest +stumbl +stump +stump +stung +stupefi +stupid +stupifi +stuprum +sturdi +sty +styga +stygian +styl +style +styx +su +sub +subcontract +subdu +subdu +subdu +subduement +subdu +subdu +subject +subject +subject +subject +submerg +submiss +submiss +submit +submit +submit +suborn +suborn +suborn +subscrib +subscrib +subscrib +subscrib +subscript +subsequ +subsidi +subsidi +subsist +subsist +substanc +substanc +substanti +substitut +substitut +substitut +substitut +subtil +subtilli +subtl +subtleti +subtleti +subtli +subtractor +suburb +subvers +subvert +succed +succe +succeed +succeed +succeed +succe +success +successantli +success +success +successfulli +success +success +success +successor +successor +succour +succour +such +suck +sucker +sucker +suck +suckl +suck +sudden +suddenli +sue +su +suerli +sue +sueth +suff +suffer +suffer +suffer +suffer +suffer +suffer +suffic +suffic +suffic +suffic +sufficeth +suffici +suffici +suffici +suffic +sufficit +suffig +suffoc +suffoc +suffoc +suffolk +suffrag +suffrag +sug +sugar +sugarsop +suggest +suggest +suggest +suggest +suggest +suggest +sui +suit +suitabl +suit +suit +suitor +suitor +suit +suivez +sullen +sullen +sulli +sulli +sulli +sulph +sulpher +sulphur +sulphur +sultan +sultri +sum +sumless +summ +summa +summari +summer +summer +summit +summon +summon +summon +sumpter +sumptuou +sumptuous +sum +sun +sunbeam +sunburn +sunburnt +sund +sundai +sundai +sunder +sunder +sundri +sung +sunk +sunken +sunni +sunris +sun +sunset +sunshin +sup +super +superfici +superfici +superflu +superflu +superflu +superflux +superior +supern +supernatur +superprais +superscript +superscript +superservic +superstit +superstiti +superstiti +supersubtl +supervis +supervisor +supp +supper +supper +suppertim +sup +supplant +suppl +suppler +supplianc +suppliant +suppliant +supplic +supplic +supplic +suppli +suppli +suppli +suppliest +suppli +supplyant +suppli +supplyment +support +support +support +support +support +support +support +supportor +suppo +suppos +suppos +suppos +suppos +supposest +suppos +supposit +suppress +suppress +suppresseth +supremaci +suprem +sup +sur +suranc +surceas +surd +sure +surecard +sure +surer +surest +sureti +sureti +surfeit +surfeit +surfeit +surfeit +surfeit +surg +surgeon +surgeon +surger +surgeri +surg +surli +surmi +surmis +surmis +surmis +surmount +surmount +surmount +surnam +surnam +surnam +surpasseth +surpass +surplic +surplu +surpri +surpris +surpris +surrend +surrei +surrei +survei +surveyest +survei +surveyor +surveyor +survei +surviv +surviv +survivor +susan +suspect +suspect +suspect +suspect +suspend +suspens +suspicion +suspicion +suspici +suspir +suspir +sust +sustain +sustain +sutler +sutton +suum +swabber +swaddl +swag +swagg +swagger +swagger +swagger +swagger +swain +swain +swallow +swallow +swallow +swallow +swam +swan +swan +sward +sware +swarm +swarm +swart +swarth +swarth +swarthi +swasher +swash +swath +swath +swathl +swai +swai +swai +swear +swearer +swearer +swearest +swear +swear +swear +sweat +sweaten +sweat +sweat +sweati +sweep +sweeper +sweep +sweet +sweeten +sweeten +sweeter +sweetest +sweetheart +sweet +sweetli +sweetmeat +sweet +sweet +swell +swell +swell +swell +swelter +sweno +swept +swerv +swerver +swerv +swift +swifter +swiftest +swiftli +swift +swill +swill +swim +swimmer +swimmer +swim +swim +swine +swineherd +swing +swing +swinish +swinstead +switch +swit +switzer +swol +swoll +swoln +swoon +swoon +swoon +swoon +swoop +swoopstak +swor +sword +sworder +sword +swore +sworn +swound +swound +swum +swung +sy +sycamor +sycorax +sylla +syllabl +syllabl +syllog +symbol +sympathis +sympathiz +sympath +sympath +sympathi +synagogu +synod +synod +syracus +syracusian +syracusian +syria +syrup +t +ta +taber +tabl +tabl +tabl +tablet +tabor +tabor +tabor +tabourin +taciturn +tack +tackl +tackl +tackl +tackl +tackl +taddl +tadpol +taffeta +taffeti +tag +tagrag +tah +tail +tailor +tailor +tail +taint +taint +taint +taint +taintur +tak +take +taken +taker +take +takest +taketh +take +tal +talbot +talbotit +talbot +tale +talent +talent +taleport +tale +talk +talk +talker +talker +talkest +talk +talk +tall +taller +tallest +talli +tallow +talli +talon +tam +tambourin +tame +tame +tame +tame +tamer +tame +tame +tamora +tamworth +tan +tang +tangl +tangl +tank +tanl +tann +tan +tanner +tanquam +tanta +tantaen +tap +tape +taper +taper +tapestri +tapestri +taphous +tapp +tapster +tapster +tar +tardi +tardili +tardi +tardi +tarentum +targ +targ +target +target +tarpeian +tarquin +tarquin +tarr +tarr +tarrianc +tarri +tarri +tarri +tarri +tart +tartar +tartar +tartli +tart +task +tasker +task +task +tassel +tast +tast +tast +tast +tatt +tatter +tatter +tatter +tattl +tattl +tattl +taught +taunt +taunt +taunt +tauntingli +taunt +tauru +tavern +tavern +tavi +tawdri +tawni +tax +taxat +taxat +tax +tax +tc +te +teach +teacher +teacher +teach +teachest +teacheth +teach +team +tear +tear +tear +tear +tearsheet +teat +tediou +tedious +tedious +teem +teem +teem +teen +teeth +teipsum +telamon +telamoniu +tell +teller +tell +tell +tellu +temp +temper +temper +temper +temper +temper +temper +tempest +tempest +tempestu +templ +templ +tempor +temporari +temporiz +tempor +tempor +temp +tempt +temptat +temptat +tempt +tempter +tempter +tempteth +tempt +tempt +ten +tenabl +tenant +tenantiu +tenantless +tenant +tench +tend +tendanc +tend +tender +tender +tenderli +tender +tender +tend +tend +tenedo +tenement +tenement +tenfold +tenni +tenour +tenour +ten +tent +tent +tenth +tenth +tent +tenur +tenur +tercel +tereu +term +termag +term +termin +termless +term +terra +terrac +terram +terra +terr +terren +terrestri +terribl +terribl +territori +territori +terror +terror +tertian +tertio +test +testament +test +tester +testern +testifi +testimoni +testimoni +testimoni +testi +testril +testi +tetchi +tether +tetter +tevil +tewksburi +text +tgv +th +thae +thame +than +thane +thane +thank +thank +thank +thankfulli +thank +thank +thank +thankless +thank +thanksgiv +thaso +that +thatch +thaw +thaw +thaw +the +theatr +theban +thebe +thee +theft +theft +thein +their +their +theis +them +theme +theme +themselv +then +thenc +thenceforth +theoric +there +thereabout +thereabout +thereaft +thereat +therebi +therefor +therein +thereof +thereon +thereto +thereunto +thereupon +therewith +therewith +thersit +these +theseu +thessalian +thessali +theti +thew +thei +thick +thicken +thicken +thicker +thickest +thicket +thickskin +thief +thieveri +thiev +thievish +thigh +thigh +thimbl +thimbl +thin +thine +thing +thing +think +thinkest +think +think +think +thinkst +thinli +third +thirdli +third +thirst +thirst +thirst +thirsti +thirteen +thirti +thirtieth +thirti +thi +thisbi +thisn +thistl +thistl +thither +thitherward +thoa +thoma +thorn +thorn +thorni +thorough +thoroughli +those +thou +though +thought +thought +thought +thousand +thousand +thracian +thraldom +thrall +thrall +thrall +thrash +thrason +thread +threadbar +threaden +thread +threat +threaten +threaten +threaten +threatest +threat +three +threefold +threepenc +threepil +three +threescor +thresher +threshold +threw +thrice +thrift +thriftless +thrift +thrifti +thrill +thrill +thrill +thrive +thrive +thriver +thrive +thrive +throat +throat +throb +throb +throca +throe +throe +thromuldo +thron +throne +throne +throne +throng +throng +throng +throstl +throttl +through +throughfar +throughfar +throughli +throughout +throw +thrower +throwest +throw +thrown +throw +thrum +thrumm +thrush +thrust +thrusteth +thrust +thrust +thumb +thumb +thump +thund +thunder +thunderbolt +thunderbolt +thunder +thunder +thunderston +thunderstrok +thurio +thursdai +thu +thwack +thwart +thwart +thwart +thwart +thy +thyme +thymu +thyreu +thyself +ti +tib +tiber +tiberio +tibei +tice +tick +tickl +tickl +tickl +tickl +tickl +ticklish +tiddl +tide +tide +tide +tidi +tie +ti +ti +tiff +tiger +tiger +tight +tightli +tike +til +tile +till +tillag +tilli +tilt +tilter +tilth +tilt +tilt +tiltyard +tim +timandra +timber +time +timeless +timeli +time +time +timon +timor +timor +timor +tinct +tinctur +tinctur +tinder +tingl +tinker +tinker +tinsel +tini +tip +tipp +tippl +tip +tipsi +tipto +tir +tire +tire +tire +tirest +tire +tirra +tirrit +ti +tish +tisick +tissu +titan +titania +tith +tith +tith +titiniu +titl +titl +titleless +titl +tittl +tittl +titular +titu +tn +to +toad +toad +toadstool +toast +toast +toast +toast +toaz +tobi +tock +tod +todai +todpol +tod +toe +toe +tofor +toge +toge +togeth +toil +toil +toil +toil +token +token +told +toledo +toler +toll +toll +tom +tomb +tomb +tomb +tombless +tomboi +tomb +tomorrow +tomyri +ton +tong +tongu +tongu +tongu +tongueless +tongu +tonight +too +took +tool +tool +tooth +toothach +toothpick +toothpick +top +topa +top +topgal +topless +topmast +topp +top +toppl +toppl +top +topsail +topsi +torch +torchbear +torchbear +torcher +torch +torchlight +tore +torment +tormenta +torment +torment +torment +tormentor +torment +torn +torrent +tortiv +tortois +tortur +tortur +tortur +tortur +tortur +tortur +torturest +tortur +toryn +toss +toss +tosseth +toss +tot +total +total +tott +totter +totter +tou +touch +touch +touch +toucheth +touch +touchston +tough +tougher +tough +tourain +tournament +tour +tou +tout +touz +tow +toward +towardli +toward +tower +tower +tower +town +town +township +townsman +townsmen +towton +toi +toi +trace +trace +track +tract +tractabl +trade +trade +trader +trade +tradesman +tradesmen +trade +tradit +tradit +traduc +traduc +traduc +traffic +traffick +traffic +tragedian +tragedian +tragedi +tragedi +tragic +tragic +trail +train +train +train +train +trait +traitor +traitorli +traitor +traitor +traitor +traitress +traject +trammel +trampl +trampl +trampl +tranc +tranc +tranio +tranquil +tranquil +transcend +transcend +transfer +transfigur +transfix +transform +transform +transform +transform +transgress +transgress +transgress +transgress +translat +translat +translat +translat +transmigr +transmut +transpar +transport +transport +transport +transport +transport +transpos +transshap +trap +trapp +trap +trap +trash +travail +travail +travel +travel +travel +travel +travel +travel +travel +travellest +travel +travel +traver +travers +trai +treacher +treacher +treacher +treacheri +tread +tread +tread +treason +treason +treason +treason +treasur +treasur +treasur +treasuri +treasuri +treat +treati +treatis +treat +treati +trebl +trebl +trebl +treboniu +tree +tree +trembl +trembl +trembl +tremblest +trembl +tremblingli +tremor +trempl +trench +trenchant +trench +trencher +trencher +trencherman +trencher +trench +trench +trent +tre +trespass +trespass +tressel +tress +trei +trial +trial +trib +tribe +tribe +tribul +tribun +tribun +tribun +tributari +tributari +tribut +tribut +trice +trick +trick +trickl +trick +tricksi +trident +tri +trier +trifl +trifl +trifler +trifl +trifl +trigon +trill +trim +trimli +trimm +trim +trim +trim +trinculo +trinculo +trinket +trip +tripartit +tripe +tripl +triplex +tripoli +tripoli +tripp +trip +trippingli +trip +trist +triton +triumph +triumphant +triumphantli +triumpher +triumpher +triumph +triumph +triumvir +triumvir +triumvir +triumviri +trivial +troat +trod +trodden +troiant +troien +troilu +troilus +trojan +trojan +troll +tromperi +trompet +troop +troop +troop +trop +trophi +trophi +tropic +trot +troth +troth +troth +trot +trot +troubl +troubl +troubler +troubl +troublesom +troublest +troublou +trough +trout +trout +trovato +trow +trowel +trowest +troi +troyan +troyan +truant +truce +truckl +trudg +true +trueborn +truepenni +truer +truest +truie +trull +trull +truli +trump +trumperi +trumpet +trumpet +trumpet +trumpet +truncheon +truncheon +trundl +trunk +trunk +trust +trust +truster +truster +trust +trust +trusti +truth +truth +try +ts +tu +tuae +tub +tubal +tub +tuck +tucket +tuesdai +tuft +tuft +tug +tugg +tug +tuition +tullu +tulli +tumbl +tumbl +tumbler +tumbl +tumult +tumultu +tun +tune +tuneabl +tune +tuner +tune +tuni +tun +tup +turban +turban +turbul +turbul +turd +turf +turfi +turk +turkei +turkei +turkish +turk +turlygod +turmoil +turmoil +turn +turnbul +turncoat +turncoat +turn +turneth +turn +turnip +turn +turph +turpitud +turquois +turret +turret +turtl +turtl +turvi +tuscan +tush +tut +tutor +tutor +tutor +tutto +twain +twang +twangl +twa +twai +tweak +tween +twelfth +twelv +twelvemonth +twentieth +twenti +twere +twice +twig +twiggen +twig +twilight +twill +twill +twin +twine +twink +twinkl +twinkl +twinkl +twinn +twin +twire +twist +twist +twit +twit +twit +twixt +two +twofold +twopenc +twopenc +two +twould +tyb +tybalt +tybalt +tyburn +ty +tyke +tymbria +type +type +typhon +tyrann +tyrann +tyrann +tyrann +tyranni +tyrant +tyrant +tyrian +tyrrel +u +ubiqu +udder +udg +ud +uglier +ugliest +ugli +ulcer +ulcer +ulyss +um +umber +umbra +umbrag +umfrevil +umpir +umpir +un +unabl +unaccommod +unaccompani +unaccustom +unach +unacquaint +unact +unadvi +unadvis +unadvisedli +unagre +unanel +unansw +unappea +unapprov +unapt +unapt +unarm +unarm +unarm +unassail +unassail +unattaint +unattempt +unattend +unauspici +unauthor +unavoid +unawar +unback +unbak +unband +unbar +unbarb +unbash +unbat +unbatt +unbecom +unbefit +unbegot +unbegotten +unbeliev +unbend +unbent +unbewail +unbid +unbidden +unbind +unbind +unbit +unbless +unblest +unbloodi +unblown +unbodi +unbolt +unbolt +unbonnet +unbookish +unborn +unbosom +unbound +unbound +unbow +unbow +unbrac +unbrac +unbraid +unbreath +unbr +unbreech +unbridl +unbrok +unbrui +unbruis +unbuckl +unbuckl +unbuckl +unbuild +unburden +unburden +unburi +unburnt +unburthen +unbutton +unbutton +uncap +uncap +uncas +uncas +uncaught +uncertain +uncertainti +unchain +unchang +uncharg +uncharg +uncharit +unchari +unchast +uncheck +unchild +uncivil +unclaim +unclasp +uncl +unclean +uncleanli +uncleanli +unclean +uncl +unclew +unclog +uncoin +uncolt +uncomeli +uncomfort +uncompassion +uncomprehens +unconfin +unconfirm +unconfirm +unconqu +unconqu +unconsid +unconst +unconstrain +unconstrain +uncontemn +uncontrol +uncorrect +uncount +uncoupl +uncourt +uncouth +uncov +uncov +uncrop +uncross +uncrown +unction +unctuou +uncuckold +uncur +uncurb +uncurb +uncurl +uncurr +uncurs +undaunt +undeaf +undeck +undeed +under +underbear +underborn +undercrest +underfoot +undergo +undergo +undergo +undergon +underground +underhand +underl +undermin +undermin +underneath +underpr +underprop +understand +understandeth +understand +understand +understand +understood +underta +undertak +undertak +undertak +undertak +undertak +undertak +undertook +undervalu +undervalu +underw +underwrit +underwrit +undescri +undeserv +undeserv +undeserv +undeserv +undetermin +undid +undint +undiscern +undiscov +undishonour +undispo +undistinguish +undistinguish +undivid +undivid +undivulg +undo +undo +undo +undon +undoubt +undoubtedli +undream +undress +undress +undrown +undut +unduti +un +unear +unearn +unearthli +uneasin +uneasi +uneath +uneduc +uneffectu +unelect +unequ +uneven +unexamin +unexecut +unexpect +unexperienc +unexperi +unexpress +unfair +unfaith +unfal +unfam +unfashion +unfasten +unfath +unfath +unf +unfe +unfeel +unfeign +unfeignedli +unfellow +unfelt +unfenc +unfili +unfil +unfinish +unfirm +unfit +unfit +unfix +unfledg +unfold +unfold +unfoldeth +unfold +unfold +unfool +unforc +unforc +unforfeit +unfortifi +unfortun +unfought +unfrequ +unfriend +unfurnish +ungain +ungal +ungart +ungart +ungenitur +ungentl +ungentl +ungent +ungird +ungodli +ungor +ungot +ungotten +ungovern +ungraci +ungrat +ungrav +ungrown +unguard +unguem +unguid +unhack +unhair +unhallow +unhallow +unhand +unhandl +unhandsom +unhang +unhappi +unhappili +unhappi +unhappi +unharden +unharm +unhatch +unheard +unheart +unheed +unheedfulli +unheedi +unhelp +unhidden +unholi +unhop +unhopefullest +unhors +unhospit +unhou +unhous +unhurt +unicorn +unicorn +unimprov +uninhabit +uninhabit +unintellig +union +union +unit +unit +uniti +univers +univers +univers +univers +unjoint +unjust +unjustic +unjustli +unkennel +unkept +unkind +unkindest +unkindli +unkind +unk +unkinglik +unkiss +unknit +unknow +unknown +unlac +unlaid +unlaw +unlawfulli +unlearn +unlearn +unless +unlesson +unlett +unlett +unlick +unlik +unlik +unlimit +unlin +unlink +unload +unload +unload +unload +unlock +unlock +unlook +unlook +unloo +unloos +unlov +unlov +unluckili +unlucki +unmad +unmak +unmanli +unmann +unmann +unmannerd +unmannerli +unmarri +unmask +unmask +unmask +unmask +unmast +unmatch +unmatch +unmatch +unmeasur +unmeet +unmellow +unmerci +unmerit +unmerit +unmind +unmindful +unmingl +unmitig +unmitig +unmix +unmoan +unmov +unmov +unmov +unmuffl +unmuffl +unmus +unmuzzl +unmuzzl +unnatur +unnatur +unnatur +unnecessarili +unnecessari +unneighbourli +unnerv +unnobl +unnot +unnumb +unnumb +unow +unpack +unpaid +unparagon +unparallel +unparti +unpath +unpav +unpai +unpeac +unpeg +unpeopl +unpeopl +unperfect +unperfect +unpick +unpin +unpink +unpiti +unpitifulli +unplagu +unplaus +unplea +unpleas +unpleas +unpolici +unpolish +unpolish +unpollut +unpossess +unpossess +unposs +unpracti +unpregn +unpremedit +unprepar +unprepar +unpress +unprevail +unprev +unpriz +unpriz +unprofit +unprofit +unprop +unproperli +unproport +unprovid +unprovid +unprovid +unprovok +unprun +unprun +unpublish +unpurg +unpurpo +unqual +unqueen +unquest +unquestion +unquiet +unquietli +unquiet +unrais +unrak +unread +unreadi +unreal +unreason +unreason +unreclaim +unreconcil +unreconcili +unrecount +unrecur +unregard +unregist +unrel +unremov +unremov +unrepriev +unresolv +unrespect +unrespect +unrest +unrestor +unrestrain +unreveng +unreverend +unrever +unrev +unreward +unright +unright +unrip +unripp +unrival +unrol +unroof +unroost +unroot +unrough +unruli +unsaf +unsalut +unsanctifi +unsatisfi +unsavouri +unsai +unscal +unscann +unscarr +unschool +unscorch +unscour +unscratch +unseal +unseam +unsearch +unseason +unseason +unseason +unseason +unsecond +unsecret +unseduc +unse +unseem +unseemli +unseen +unseminar +unsepar +unservic +unset +unsettl +unsettl +unsev +unsex +unshak +unshak +unshaken +unshap +unshap +unsheath +unsheath +unshorn +unshout +unshown +unshrink +unshrubb +unshunn +unshunn +unsift +unsightli +unsinew +unsist +unskil +unskilfulli +unskil +unslip +unsmirch +unsoil +unsolicit +unsort +unsought +unsound +unsound +unspeak +unspeak +unspeak +unspher +unspok +unspoken +unspot +unsquar +unstabl +unstaid +unstain +unstain +unstanch +unstat +unsteadfast +unstoop +unstring +unstuff +unsubstanti +unsuit +unsuit +unsulli +unsunn +unsur +unsur +unsuspect +unswai +unsway +unswai +unswear +unswept +unsworn +untaint +untalk +untangl +untangl +untast +untaught +untemp +untend +untent +untent +unthank +unthank +unthink +unthought +unthread +unthrift +unthrift +unthrifti +unti +unti +until +untimb +untim +untir +untir +untir +untitl +unto +untold +untouch +untoward +untowardli +untrad +untrain +untrain +untread +untreasur +untri +untrim +untrod +untrodden +untroubl +untru +untruss +untruth +untruth +untuck +untun +untun +untun +untutor +untutor +untwin +unurg +unu +unus +unusu +unvalu +unvanquish +unvarnish +unveil +unveil +unvener +unvex +unviol +unvirtu +unvisit +unvulner +unwar +unwarili +unwash +unwatch +unweari +unw +unwedg +unweed +unweigh +unweigh +unwelcom +unwept +unwhipp +unwholesom +unwieldi +unwil +unwillingli +unwilling +unwind +unwip +unwis +unwis +unwish +unwish +unwit +unwittingli +unwont +unwoo +unworthi +unworthiest +unworthili +unworthi +unworthi +unwrung +unyok +unyok +up +upbraid +upbraid +upbraid +upbraid +uphoard +uphold +upholdeth +uphold +uphold +uplift +uplift +upmost +upon +upper +uprear +uprear +upright +upright +upright +upris +upris +uproar +uproar +uprou +upshoot +upshot +upsid +upspr +upstair +upstart +upturn +upward +upward +urchin +urchinfield +urchin +urg +urg +urg +urgent +urg +urgest +urg +urin +urin +urin +urn +urn +ur +ursa +urslei +ursula +urswick +us +usag +usanc +usanc +us +us +us +useless +user +us +usest +useth +usher +usher +usher +usher +us +usual +usual +usur +usur +usuri +usur +usurp +usurp +usurp +usurp +usurp +usurp +usurpingli +usurp +usuri +ut +utensil +utensil +util +utmost +utt +utter +utter +utter +uttereth +utter +utterli +uttermost +utter +uy +v +va +vacanc +vacant +vacat +vade +vagabond +vagabond +vagram +vagrom +vail +vail +vail +vaillant +vain +vainer +vainglori +vainli +vain +vai +valanc +valanc +vale +valenc +valentin +valentinu +valentio +valeria +valeriu +vale +valiant +valiantli +valiant +valid +vallant +vallei +vallei +valli +valor +valor +valor +valour +valu +valuat +valu +valu +valueless +valu +valu +vane +vanish +vanish +vanish +vanishest +vanish +vaniti +vaniti +vanquish +vanquish +vanquish +vanquishest +vanquisheth +vant +vantag +vantag +vantbrac +vapian +vapor +vapor +vapour +vapour +vara +variabl +varianc +variat +variat +vari +variest +varieti +varld +varlet +varletri +varlet +varletto +varnish +varriu +varro +vari +vari +vassal +vassalag +vassal +vast +vastid +vasti +vat +vater +vaudemont +vaughan +vault +vaultag +vault +vault +vault +vaulti +vaumond +vaunt +vaunt +vaunter +vaunt +vauntingli +vaunt +vauvado +vaux +vaward +ve +veal +vede +vehem +vehem +vehement +vehor +veil +veil +veil +vein +vein +vell +velur +velutu +velvet +vendibl +vener +vener +venetia +venetian +venetian +venei +veng +vengeanc +vengeanc +veng +veni +venial +venic +venison +venit +venom +venom +venom +vent +ventag +vent +ventidiu +ventricl +vent +ventur +ventur +ventur +ventur +ventur +ventur +venu +venu +venuto +ver +verb +verba +verbal +verbatim +verbos +verdict +verdun +verdur +vere +verefor +verg +verg +verger +verg +verier +veriest +verifi +verifi +verili +verit +verit +veriti +veriti +vermilion +vermin +vernon +verona +veronesa +versal +vers +vers +vers +vert +veri +vesper +vessel +vessel +vestal +vestment +vestur +vetch +vetch +veux +vex +vexat +vexat +vex +vex +vexest +vexeth +vex +vi +via +vial +vial +viand +viand +vic +vicar +vice +viceger +vicentio +viceroi +viceroi +vice +vici +viciou +vicious +vict +victim +victor +victoress +victori +victori +victor +victori +victual +victual +victual +videlicet +video +vide +videsn +vidi +vie +vi +vienna +view +viewest +vieweth +view +viewless +view +vigil +vigil +vigil +vigit +vigour +vii +viii +vile +vile +vile +viler +vilest +vill +villag +villag +villageri +villag +villain +villaini +villain +villain +villain +villaini +villani +villan +villani +villiago +villian +villianda +villian +vinaigr +vincentio +vincer +vindic +vine +vinegar +vine +vineyard +vineyard +vint +vintner +viol +viola +violat +violat +violat +violat +violat +violenc +violent +violenta +violenteth +violent +violet +violet +viper +viper +viper +vir +virgilia +virgin +virgin +virginal +virgin +virginiu +virgin +virgo +virtu +virtu +virtuou +virtuous +visag +visag +visag +visard +viscount +visibl +visibl +vision +vision +visit +visit +visit +visit +visit +visit +visitor +visitor +visit +visor +vita +vita +vital +vitement +vitruvio +vitx +viva +vivant +vive +vixen +viz +vizament +vizard +vizard +vizard +vizor +vlout +vocat +vocativo +vocatur +voce +voic +voic +voic +void +void +void +voke +volabl +volant +volivorco +vollei +volquessen +volsc +volsc +volscian +volscian +volt +voltemand +volubl +volubl +volum +volum +volumnia +volumniu +voluntari +voluntari +voluptu +voluptu +vomiss +vomit +vomit +vor +vore +vortnight +vot +votari +votarist +votarist +votari +votr +vouch +voucher +voucher +vouch +vouch +vouchsaf +vouchsaf +vouchsaf +vouchsaf +vouchsaf +voudrai +vour +vou +voutsaf +vow +vow +vowel +vowel +vow +vow +vox +voyag +voyag +vraiment +vulcan +vulgar +vulgarli +vulgar +vulgo +vulner +vultur +vultur +vurther +w +wad +waddl +wade +wade +wafer +waft +waftag +waft +waft +wag +wage +wager +wager +wage +wag +waggish +waggl +waggon +waggon +wagon +wagon +wag +wagtail +wail +wail +wail +wail +wain +wainrop +wainscot +waist +wait +wait +waiter +waiteth +wait +wait +wak +wake +wake +wakefield +waken +waken +wake +wakest +wake +wale +walk +walk +walk +walk +wall +wall +wallet +wallet +wallon +walloon +wallow +wall +walnut +walter +wan +wand +wander +wander +wander +wander +wander +wand +wane +wane +wane +wane +wann +want +want +wanteth +want +wanton +wantonli +wanton +wanton +want +wappen +war +warbl +warbl +ward +ward +warden +warder +warder +wardrob +wardrop +ward +ware +ware +warili +warkworth +warlik +warm +warm +warmer +warm +warm +warmth +warn +warn +warn +warn +warn +warp +warp +warr +warrant +warrant +warranteth +warrantis +warrant +warrant +warranti +warren +warren +war +warrior +warrior +war +wart +warwick +warwickshir +wari +wa +wash +wash +washer +wash +washford +wash +wasp +waspish +wasp +wassail +wassail +wast +wast +wast +wast +waster +wast +wast +wat +watch +watch +watcher +watch +watch +watch +watch +watchman +watchmen +watchword +water +waterdrop +water +waterfli +waterford +water +waterish +waterpot +waterrug +water +waterton +wateri +wav +wave +wave +waver +waver +waver +wave +wave +waw +wawl +wax +wax +waxen +wax +wax +wai +waylaid +waylai +wai +wayward +wayward +wayward +we +weak +weaken +weaken +weaker +weakest +weakl +weakli +weak +weal +wealsmen +wealth +wealthiest +wealthili +wealthi +wealtlli +wean +weapon +weapon +wear +wearer +wearer +weari +weari +weariest +wearili +weari +wear +wearisom +wear +weari +weasel +weather +weathercock +weather +weav +weav +weaver +weaver +weav +weav +web +wed +wed +wed +wedg +wedg +wedg +wedlock +wednesdai +weed +weed +weeder +weed +weed +weedi +week +week +weekli +week +ween +ween +weep +weeper +weep +weepingli +weep +weep +weet +weigh +weigh +weigh +weigh +weight +weightier +weightless +weight +weighti +weird +welcom +welcom +welcom +welcom +welcomest +welfar +welkin +well +well +welsh +welshman +welshmen +welshwomen +wench +wench +wench +wend +went +wept +weradai +were +wert +west +western +westminst +westmoreland +westward +wet +wether +wet +wezand +whale +whale +wharf +wharf +what +whate +whatev +whatso +whatsoev +whatsom +whe +wheat +wheaten +wheel +wheel +wheel +wheer +wheeson +wheez +whelk +whelk +whelm +whelp +whelp +whelp +when +whena +whenc +whencesoev +whene +whenev +whensoev +where +whereabout +wherea +whereat +wherebi +wherefor +wherein +whereinto +whereof +whereon +whereout +whereso +whereso +wheresoev +wheresom +whereto +whereuntil +whereunto +whereupon +wherev +wherewith +wherewith +whet +whether +whetston +whet +whew +whei +which +whiff +whiffler +while +while +whilst +whin +whine +whine +whinid +whine +whip +whipp +whipper +whip +whip +whipster +whipstock +whipt +whirl +whirl +whirligig +whirl +whirlpool +whirl +whirlwind +whirlwind +whisp +whisper +whisper +whisper +whisper +whist +whistl +whistl +whistl +whit +white +whitehal +white +white +whiter +white +whitest +whither +white +whitmor +whitster +whitsun +whittl +whizz +who +whoa +whoe +whoever +whole +wholesom +wholesom +wholli +whom +whoobub +whoop +whoop +whor +whore +whoremast +whoremasterli +whoremong +whore +whoreson +whoreson +whore +whorish +whose +whoso +whoso +whosoev +why +wi +wick +wick +wickedn +wicked +wicket +wicki +wid +wide +widen +wider +widow +widow +widow +widowhood +widow +wield +wife +wight +wight +wild +wildcat +wilder +wilder +wildest +wildfir +wildli +wild +wild +wile +wil +wilful +wilfulli +wilfuln +wil +will +will +willer +willeth +william +william +will +willingli +willing +willoughbi +willow +will +wilt +wiltshir +wimpl +win +winc +winch +winchest +wincot +wind +wind +windgal +wind +windlass +windmil +window +window +windpip +wind +windsor +windi +wine +wing +wing +wingfield +wingham +wing +wink +wink +wink +winner +winner +win +winnow +winnow +winnow +win +winter +winterli +winter +wip +wipe +wipe +wipe +wipe +wire +wire +wiri +wisdom +wisdom +wise +wiseli +wise +wiser +wisest +wish +wish +wisher +wisher +wish +wishest +wisheth +wish +wish +wishtli +wisp +wist +wit +witb +witch +witchcraft +witch +witch +with +withal +withdraw +withdraw +withdrawn +withdrew +wither +wither +wither +wither +withheld +withhold +withhold +within +withold +without +withstand +withstand +withstood +witless +wit +wit +witnesseth +wit +wit +wit +wittenberg +wittiest +wittili +wit +wittingli +wittol +wittolli +witti +wiv +wive +wive +wive +wive +wizard +wizard +wo +woe +woeful +woeful +woefullest +woe +woful +wolf +wolfish +wolsei +wolv +wolvish +woman +womanhood +womanish +womankind +womanli +womb +womb +wombi +women +won +woncot +wond +wonder +wonder +wonder +wonderfulli +wonder +wonder +wondrou +wondrous +wont +wont +woo +wood +woodbin +woodcock +woodcock +wooden +woodland +woodman +woodmong +wood +woodstock +woodvil +woo +wooer +wooer +wooe +woof +woo +wooingli +wool +woollen +woolli +woolsack +woolsei +woolward +woo +wor +worcest +word +word +wore +worin +work +worker +work +work +workman +workmanli +workmanship +workmen +work +worki +world +worldl +worldli +world +worm +worm +wormwood +wormi +worn +worri +worri +worri +worri +wors +worser +worship +worship +worshipfulli +worshipp +worshipp +worshipp +worshippest +worship +worst +worst +wort +worth +worthi +worthier +worthi +worthiest +worthili +worthi +worthless +worth +worthi +wort +wot +wot +wot +wouid +would +wouldest +wouldst +wound +wound +wound +wound +woundless +wound +woun +woven +wow +wrack +wrack +wrangl +wrangler +wrangler +wrangl +wrap +wrapp +wrap +wrapt +wrath +wrath +wrathfulli +wrath +wreak +wreak +wreak +wreath +wreath +wreathen +wreath +wreck +wreck +wreck +wren +wrench +wrench +wren +wrest +wrest +wrest +wrestl +wrestl +wrestler +wrestl +wretch +wretchcd +wretch +wretched +wretch +wring +wringer +wring +wring +wrinkl +wrinkl +wrinkl +wrist +wrist +writ +write +writer +writer +write +writhl +write +write +writ +written +wrong +wrong +wronger +wrong +wrongfulli +wrong +wrongli +wrong +wronk +wrote +wroth +wrought +wrung +wry +wry +wt +wul +wye +x +xanthipp +xi +xii +xiii +xiv +xv +y +yard +yard +yare +yare +yarn +yaughan +yaw +yawn +yawn +yclepe +yclipe +ye +yea +yead +year +yearli +yearn +yearn +year +yea +yeast +yedward +yell +yellow +yellow +yellow +yellow +yellow +yell +yelp +yeoman +yeomen +yerk +ye +yesterdai +yesterdai +yesternight +yesti +yet +yew +yicld +yield +yield +yielder +yielder +yield +yield +yok +yoke +yoke +yokefellow +yoke +yoketh +yon +yond +yonder +yongrei +yore +yorick +york +yorkist +york +yorkshir +you +young +younger +youngest +youngl +youngl +youngli +younker +your +your +yourself +yourselv +youth +youth +youth +youtli +zani +zani +zeal +zealou +zeal +zed +zenelophon +zenith +zephyr +zir +zo +zodiac +zodiac +zone +zound +zwagger diff --git a/basis/porter-stemmer/test/voc.txt b/basis/porter-stemmer/test/voc.txt new file mode 100644 index 0000000000..604ef4083a --- /dev/null +++ b/basis/porter-stemmer/test/voc.txt @@ -0,0 +1,23531 @@ +a +aaron +abaissiez +abandon +abandoned +abase +abash +abate +abated +abatement +abatements +abates +abbess +abbey +abbeys +abbominable +abbot +abbots +abbreviated +abed +abel +aberga +abergavenny +abet +abetting +abhominable +abhor +abhorr +abhorred +abhorring +abhors +abhorson +abide +abides +abilities +ability +abject +abjectly +abjects +abjur +abjure +able +abler +aboard +abode +aboded +abodements +aboding +abominable +abominably +abominations +abortive +abortives +abound +abounding +about +above +abr +abraham +abram +abreast +abridg +abridge +abridged +abridgment +abroach +abroad +abrogate +abrook +abrupt +abruption +abruptly +absence +absent +absey +absolute +absolutely +absolv +absolver +abstains +abstemious +abstinence +abstract +absurd +absyrtus +abundance +abundant +abundantly +abus +abuse +abused +abuser +abuses +abusing +abutting +aby +abysm +ac +academe +academes +accent +accents +accept +acceptable +acceptance +accepted +accepts +access +accessary +accessible +accidence +accident +accidental +accidentally +accidents +accite +accited +accites +acclamations +accommodate +accommodated +accommodation +accommodations +accommodo +accompanied +accompany +accompanying +accomplices +accomplish +accomplished +accomplishing +accomplishment +accompt +accord +accordant +accorded +accordeth +according +accordingly +accords +accost +accosted +account +accountant +accounted +accounts +accoutred +accoutrement +accoutrements +accrue +accumulate +accumulated +accumulation +accurs +accursed +accurst +accus +accusation +accusations +accusative +accusativo +accuse +accused +accuser +accusers +accuses +accuseth +accusing +accustom +accustomed +ace +acerb +ache +acheron +aches +achiev +achieve +achieved +achievement +achievements +achiever +achieves +achieving +achilles +aching +achitophel +acknowledg +acknowledge +acknowledged +acknowledgment +acknown +acold +aconitum +acordo +acorn +acquaint +acquaintance +acquainted +acquaints +acquir +acquire +acquisition +acquit +acquittance +acquittances +acquitted +acre +acres +across +act +actaeon +acted +acting +action +actions +actium +active +actively +activity +actor +actors +acts +actual +acture +acute +acutely +ad +adage +adallas +adam +adamant +add +added +adder +adders +addeth +addict +addicted +addiction +adding +addition +additions +addle +address +addressing +addrest +adds +adhere +adheres +adieu +adieus +adjacent +adjoin +adjoining +adjourn +adjudg +adjudged +adjunct +administer +administration +admir +admirable +admiral +admiration +admire +admired +admirer +admiring +admiringly +admission +admit +admits +admittance +admitted +admitting +admonish +admonishing +admonishment +admonishments +admonition +ado +adonis +adopt +adopted +adoptedly +adoption +adoptious +adopts +ador +adoration +adorations +adore +adorer +adores +adorest +adoreth +adoring +adorn +adorned +adornings +adornment +adorns +adown +adramadio +adrian +adriana +adriano +adriatic +adsum +adulation +adulterate +adulterates +adulterers +adulteress +adulteries +adulterous +adultery +adultress +advanc +advance +advanced +advancement +advancements +advances +advancing +advantage +advantageable +advantaged +advantageous +advantages +advantaging +advent +adventur +adventure +adventures +adventuring +adventurous +adventurously +adversaries +adversary +adverse +adversely +adversities +adversity +advertis +advertise +advertised +advertisement +advertising +advice +advis +advise +advised +advisedly +advises +advisings +advocate +advocation +aeacida +aeacides +aedile +aediles +aegeon +aegion +aegles +aemelia +aemilia +aemilius +aeneas +aeolus +aer +aerial +aery +aesculapius +aeson +aesop +aetna +afar +afear +afeard +affability +affable +affair +affaire +affairs +affect +affectation +affectations +affected +affectedly +affecteth +affecting +affection +affectionate +affectionately +affections +affects +affeer +affianc +affiance +affianced +affied +affin +affined +affinity +affirm +affirmation +affirmatives +afflict +afflicted +affliction +afflictions +afflicts +afford +affordeth +affords +affray +affright +affrighted +affrights +affront +affronted +affy +afield +afire +afloat +afoot +afore +aforehand +aforesaid +afraid +afresh +afric +africa +african +afront +after +afternoon +afterward +afterwards +ag +again +against +agamemmon +agamemnon +agate +agaz +age +aged +agenor +agent +agents +ages +aggravate +aggrief +agile +agincourt +agitation +aglet +agnize +ago +agone +agony +agree +agreed +agreeing +agreement +agrees +agrippa +aground +ague +aguecheek +agued +agueface +agues +ah +aha +ahungry +ai +aialvolio +aiaria +aid +aidance +aidant +aided +aiding +aidless +aids +ail +aim +aimed +aimest +aiming +aims +ainsi +aio +air +aired +airless +airs +airy +ajax +akilling +al +alabaster +alack +alacrity +alarbus +alarm +alarms +alarum +alarums +alas +alb +alban +albans +albany +albeit +albion +alchemist +alchemy +alcibiades +alcides +alder +alderman +aldermen +ale +alecto +alehouse +alehouses +alencon +alengon +aleppo +ales +alewife +alexander +alexanders +alexandria +alexandrian +alexas +alias +alice +alien +aliena +alight +alighted +alights +aliis +alike +alisander +alive +all +alla +allay +allayed +allaying +allayment +allayments +allays +allegation +allegations +allege +alleged +allegiance +allegiant +alley +alleys +allhallowmas +alliance +allicholy +allied +allies +alligant +alligator +allons +allot +allots +allotted +allottery +allow +allowance +allowed +allowing +allows +allur +allure +allurement +alluring +allusion +ally +allycholly +almain +almanac +almanack +almanacs +almighty +almond +almost +alms +almsman +aloes +aloft +alone +along +alonso +aloof +aloud +alphabet +alphabetical +alphonso +alps +already +also +alt +altar +altars +alter +alteration +altered +alters +althaea +although +altitude +altogether +alton +alway +always +am +amaimon +amain +amaking +amamon +amaz +amaze +amazed +amazedly +amazedness +amazement +amazes +amazeth +amazing +amazon +amazonian +amazons +ambassador +ambassadors +amber +ambiguides +ambiguities +ambiguous +ambition +ambitions +ambitious +ambitiously +amble +ambled +ambles +ambling +ambo +ambuscadoes +ambush +amen +amend +amended +amendment +amends +amerce +america +ames +amiable +amid +amidst +amiens +amis +amiss +amities +amity +amnipotent +among +amongst +amorous +amorously +amort +amount +amounts +amour +amphimacus +ample +ampler +amplest +amplified +amplify +amply +ampthill +amurath +amyntas +an +anatomiz +anatomize +anatomy +ancestor +ancestors +ancestry +anchises +anchor +anchorage +anchored +anchoring +anchors +anchovies +ancient +ancientry +ancients +ancus +and +andirons +andpholus +andren +andrew +andromache +andronici +andronicus +anew +ang +angel +angelica +angelical +angelo +angels +anger +angerly +angers +anges +angiers +angl +anglais +angle +angler +angleterre +angliae +angling +anglish +angrily +angry +anguish +angus +animal +animals +animis +anjou +ankle +anna +annals +anne +annex +annexed +annexions +annexment +annothanize +announces +annoy +annoyance +annoying +annual +anoint +anointed +anon +another +anselmo +answer +answerable +answered +answerest +answering +answers +ant +ante +antenor +antenorides +anteroom +anthem +anthems +anthony +anthropophagi +anthropophaginian +antiates +antic +anticipate +anticipates +anticipatest +anticipating +anticipation +antick +anticly +antics +antidote +antidotes +antigonus +antiopa +antipathy +antipholus +antipholuses +antipodes +antiquary +antique +antiquity +antium +antoniad +antonio +antonius +antony +antres +anvil +any +anybody +anyone +anything +anywhere +ap +apace +apart +apartment +apartments +ape +apemantus +apennines +apes +apiece +apish +apollinem +apollo +apollodorus +apology +apoplex +apoplexy +apostle +apostles +apostrophas +apoth +apothecary +appal +appall +appalled +appals +apparel +apparell +apparelled +apparent +apparently +apparition +apparitions +appeach +appeal +appeals +appear +appearance +appeared +appeareth +appearing +appears +appeas +appease +appeased +appelant +appele +appelee +appeles +appelez +appellant +appellants +appelons +appendix +apperil +appertain +appertaining +appertainings +appertains +appertinent +appertinents +appetite +appetites +applaud +applauded +applauding +applause +applauses +apple +apples +appletart +appliance +appliances +applications +applied +applies +apply +applying +appoint +appointed +appointment +appointments +appoints +apprehend +apprehended +apprehends +apprehension +apprehensions +apprehensive +apprendre +apprenne +apprenticehood +appris +approach +approachers +approaches +approacheth +approaching +approbation +approof +appropriation +approv +approve +approved +approvers +approves +appurtenance +appurtenances +apricocks +april +apron +aprons +apt +apter +aptest +aptly +aptness +aqua +aquilon +aquitaine +arabia +arabian +araise +arbitrate +arbitrating +arbitrator +arbitrement +arbors +arbour +arc +arch +archbishop +archbishopric +archdeacon +arched +archelaus +archer +archers +archery +archibald +archidamus +architect +arcu +arde +arden +ardent +ardour +are +argal +argier +argo +argosies +argosy +argu +argue +argued +argues +arguing +argument +arguments +argus +ariachne +ariadne +ariel +aries +aright +arinado +arinies +arion +arise +arises +ariseth +arising +aristode +aristotle +arithmetic +arithmetician +ark +arm +arma +armado +armadoes +armagnac +arme +armed +armenia +armies +armigero +arming +armipotent +armor +armour +armourer +armourers +armours +armoury +arms +army +arn +aroint +arose +arouse +aroused +arragon +arraign +arraigned +arraigning +arraignment +arrant +arras +array +arrearages +arrest +arrested +arrests +arriv +arrival +arrivance +arrive +arrived +arrives +arriving +arrogance +arrogancy +arrogant +arrow +arrows +art +artemidorus +arteries +arthur +article +articles +articulate +artificer +artificial +artillery +artire +artist +artists +artless +artois +arts +artus +arviragus +as +asaph +ascanius +ascend +ascended +ascendeth +ascends +ascension +ascent +ascribe +ascribes +ash +asham +ashamed +asher +ashes +ashford +ashore +ashouting +ashy +asia +aside +ask +askance +asked +asker +asketh +asking +asks +aslant +asleep +asmath +asp +aspect +aspects +aspen +aspersion +aspic +aspicious +aspics +aspir +aspiration +aspire +aspiring +asquint +ass +assail +assailable +assailant +assailants +assailed +assaileth +assailing +assails +assassination +assault +assaulted +assaults +assay +assaying +assays +assemblance +assemble +assembled +assemblies +assembly +assent +asses +assez +assign +assigned +assigns +assinico +assist +assistance +assistances +assistant +assistants +assisted +assisting +associate +associated +associates +assuage +assubjugate +assum +assume +assumes +assumption +assur +assurance +assure +assured +assuredly +assures +assyrian +astonish +astonished +astraea +astray +astrea +astronomer +astronomers +astronomical +astronomy +asunder +at +atalanta +ate +ates +athenian +athenians +athens +athol +athversary +athwart +atlas +atomies +atomy +atone +atonement +atonements +atropos +attach +attached +attachment +attain +attainder +attains +attaint +attainted +attainture +attempt +attemptable +attempted +attempting +attempts +attend +attendance +attendant +attendants +attended +attendents +attendeth +attending +attends +attent +attention +attentive +attentivenes +attest +attested +attir +attire +attired +attires +attorney +attorneyed +attorneys +attorneyship +attract +attraction +attractive +attracts +attribute +attributed +attributes +attribution +attributive +atwain +au +aubrey +auburn +aucun +audacious +audaciously +audacity +audible +audience +audis +audit +auditor +auditors +auditory +audre +audrey +aufidius +aufidiuses +auger +aught +augment +augmentation +augmented +augmenting +augurer +augurers +augures +auguring +augurs +augury +august +augustus +auld +aumerle +aunchient +aunt +aunts +auricular +aurora +auspicious +aussi +austere +austerely +austereness +austerity +austria +aut +authentic +author +authorities +authority +authorized +authorizing +authors +autolycus +autre +autumn +auvergne +avail +avails +avarice +avaricious +avaunt +ave +aveng +avenge +avenged +averring +avert +aves +avez +avis +avoid +avoided +avoiding +avoids +avoirdupois +avouch +avouched +avouches +avouchment +avow +aw +await +awaits +awak +awake +awaked +awaken +awakened +awakens +awakes +awaking +award +awards +awasy +away +awe +aweary +aweless +awful +awhile +awkward +awl +awooing +awork +awry +axe +axle +axletree +ay +aye +ayez +ayli +azur +azure +b +ba +baa +babbl +babble +babbling +babe +babes +babies +baboon +baboons +baby +babylon +bacare +bacchanals +bacchus +bach +bachelor +bachelors +back +backbite +backbitten +backing +backs +backward +backwardly +backwards +bacon +bacons +bad +bade +badge +badged +badges +badly +badness +baes +baffl +baffle +baffled +bag +baggage +bagot +bagpipe +bags +bail +bailiff +baillez +baily +baisant +baisees +baiser +bait +baited +baiting +baitings +baits +bajazet +bak +bake +baked +baker +bakers +bakes +baking +bal +balanc +balance +balcony +bald +baldrick +bale +baleful +balk +ball +ballad +ballads +ballast +ballasting +ballet +ballow +balls +balm +balms +balmy +balsam +balsamum +balth +balthasar +balthazar +bames +ban +banbury +band +bandied +banding +bandit +banditti +banditto +bands +bandy +bandying +bane +banes +bang +bangor +banish +banished +banishers +banishment +banister +bank +bankrout +bankrupt +bankrupts +banks +banner +bannerets +banners +banning +banns +banquet +banqueted +banqueting +banquets +banquo +bans +baptism +baptista +baptiz +bar +barbarian +barbarians +barbarism +barbarous +barbary +barbason +barbed +barber +barbermonger +bard +bardolph +bards +bare +bared +barefac +barefaced +barefoot +bareheaded +barely +bareness +barful +bargain +bargains +barge +bargulus +baring +bark +barking +barkloughly +barks +barky +barley +barm +barn +barnacles +barnardine +barne +barnes +barnet +barns +baron +barons +barony +barr +barrabas +barrel +barrels +barren +barrenly +barrenness +barricado +barricadoes +barrow +bars +barson +barter +bartholomew +bas +basan +base +baseless +basely +baseness +baser +bases +basest +bashful +bashfulness +basilisco +basilisk +basilisks +basimecu +basin +basingstoke +basins +basis +bask +basket +baskets +bass +bassanio +basset +bassianus +basta +bastard +bastardizing +bastardly +bastards +bastardy +basted +bastes +bastinado +basting +bat +batailles +batch +bate +bated +bates +bath +bathe +bathed +bathing +baths +bating +batler +bats +batt +battalia +battalions +batten +batter +battering +batters +battery +battle +battled +battlefield +battlements +battles +batty +bauble +baubles +baubling +baulk +bavin +bawcock +bawd +bawdry +bawds +bawdy +bawl +bawling +bay +baying +baynard +bayonne +bays +be +beach +beached +beachy +beacon +bead +beaded +beadle +beadles +beads +beadsmen +beagle +beagles +beak +beaks +beam +beamed +beams +bean +beans +bear +beard +bearded +beardless +beards +bearer +bearers +bearest +beareth +bearing +bears +beast +beastliest +beastliness +beastly +beasts +beat +beated +beaten +beating +beatrice +beats +beau +beaufort +beaumond +beaumont +beauteous +beautied +beauties +beautified +beautiful +beautify +beauty +beaver +beavers +became +because +bechanc +bechance +bechanced +beck +beckon +beckons +becks +becom +become +becomed +becomes +becoming +becomings +bed +bedabbled +bedash +bedaub +bedazzled +bedchamber +bedclothes +bedded +bedeck +bedecking +bedew +bedfellow +bedfellows +bedford +bedlam +bedrench +bedrid +beds +bedtime +bedward +bee +beef +beefs +beehives +been +beer +bees +beest +beetle +beetles +beeves +befall +befallen +befalls +befell +befits +befitted +befitting +befor +before +beforehand +befortune +befriend +befriended +befriends +beg +began +beget +begets +begetting +begg +beggar +beggared +beggarly +beggarman +beggars +beggary +begging +begin +beginners +beginning +beginnings +begins +begnawn +begone +begot +begotten +begrimed +begs +beguil +beguile +beguiled +beguiles +beguiling +begun +behalf +behalfs +behav +behaved +behavedst +behavior +behaviors +behaviour +behaviours +behead +beheaded +beheld +behest +behests +behind +behold +beholder +beholders +beholdest +beholding +beholds +behoof +behooffull +behooves +behove +behoves +behowls +being +bel +belarius +belch +belching +beldam +beldame +beldams +belee +belgia +belie +belied +belief +beliest +believ +believe +believed +believes +believest +believing +belike +bell +bellario +belle +bellied +bellies +bellman +bellona +bellow +bellowed +bellowing +bellows +bells +belly +bellyful +belman +belmont +belock +belong +belonging +belongings +belongs +belov +beloved +beloving +below +belt +belzebub +bemadding +bemet +bemete +bemoan +bemoaned +bemock +bemoil +bemonster +ben +bench +bencher +benches +bend +bended +bending +bends +bene +beneath +benedicite +benedick +benediction +benedictus +benefactors +benefice +beneficial +benefit +benefited +benefits +benetted +benevolence +benevolences +benied +benison +bennet +bent +bentii +bentivolii +bents +benumbed +benvolio +bepaint +bepray +bequeath +bequeathed +bequeathing +bequest +ber +berard +berattle +beray +bere +bereave +bereaved +bereaves +bereft +bergamo +bergomask +berhym +berhyme +berkeley +bermoothes +bernardo +berod +berowne +berri +berries +berrord +berry +bertram +berwick +bescreen +beseech +beseeched +beseechers +beseeching +beseek +beseem +beseemeth +beseeming +beseems +beset +beshrew +beside +besides +besieg +besiege +besieged +beslubber +besmear +besmeared +besmirch +besom +besort +besotted +bespake +bespeak +bespice +bespoke +bespotted +bess +bessy +best +bestained +bested +bestial +bestir +bestirr +bestow +bestowed +bestowing +bestows +bestraught +bestrew +bestrid +bestride +bestrides +bet +betake +beteem +bethink +bethought +bethrothed +bethump +betid +betide +betideth +betime +betimes +betoken +betook +betossed +betray +betrayed +betraying +betrays +betrims +betroth +betrothed +betroths +bett +betted +better +bettered +bettering +betters +betting +bettre +between +betwixt +bevel +beverage +bevis +bevy +bewail +bewailed +bewailing +bewails +beware +bewasted +beweep +bewept +bewet +bewhored +bewitch +bewitched +bewitchment +bewray +beyond +bezonian +bezonians +bianca +bianco +bias +bibble +bickerings +bid +bidden +bidding +biddings +biddy +bide +bides +biding +bids +bien +bier +bifold +big +bigamy +biggen +bigger +bigness +bigot +bilberry +bilbo +bilboes +bilbow +bill +billeted +billets +billiards +billing +billow +billows +bills +bin +bind +bindeth +binding +binds +biondello +birch +bird +birding +birdlime +birds +birnam +birth +birthday +birthdom +birthplace +birthright +birthrights +births +bis +biscuit +bishop +bishops +bisson +bit +bitch +bite +biter +bites +biting +bits +bitt +bitten +bitter +bitterest +bitterly +bitterness +blab +blabb +blabbing +blabs +black +blackamoor +blackamoors +blackberries +blackberry +blacker +blackest +blackfriars +blackheath +blackmere +blackness +blacks +bladder +bladders +blade +bladed +blades +blains +blam +blame +blamed +blameful +blameless +blames +blanc +blanca +blanch +blank +blanket +blanks +blaspheme +blaspheming +blasphemous +blasphemy +blast +blasted +blasting +blastments +blasts +blaz +blaze +blazes +blazing +blazon +blazoned +blazoning +bleach +bleaching +bleak +blear +bleared +bleat +bleated +bleats +bled +bleed +bleedest +bleedeth +bleeding +bleeds +blemish +blemishes +blench +blenches +blend +blended +blent +bless +blessed +blessedly +blessedness +blesses +blesseth +blessing +blessings +blest +blew +blind +blinded +blindfold +blinding +blindly +blindness +blinds +blink +blinking +bliss +blist +blister +blisters +blithe +blithild +bloat +block +blockish +blocks +blois +blood +blooded +bloodhound +bloodied +bloodier +bloodiest +bloodily +bloodless +bloods +bloodshed +bloodshedding +bloodstained +bloody +bloom +blooms +blossom +blossoming +blossoms +blot +blots +blotted +blotting +blount +blow +blowed +blowers +blowest +blowing +blown +blows +blowse +blubb +blubber +blubbering +blue +bluecaps +bluest +blunt +blunted +blunter +bluntest +blunting +bluntly +bluntness +blunts +blur +blurr +blurs +blush +blushes +blushest +blushing +blust +bluster +blusterer +blusters +bo +boar +board +boarded +boarding +boards +boarish +boars +boast +boasted +boastful +boasting +boasts +boat +boats +boatswain +bob +bobb +boblibindo +bobtail +bocchus +bode +boded +bodements +bodes +bodg +bodied +bodies +bodiless +bodily +boding +bodkin +body +bodykins +bog +boggle +boggler +bogs +bohemia +bohemian +bohun +boil +boiling +boils +boist +boisterous +boisterously +boitier +bold +bolden +bolder +boldest +boldly +boldness +bolds +bolingbroke +bolster +bolt +bolted +bolter +bolters +bolting +bolts +bombard +bombards +bombast +bon +bona +bond +bondage +bonded +bondmaid +bondman +bondmen +bonds +bondslave +bone +boneless +bones +bonfire +bonfires +bonjour +bonne +bonnet +bonneted +bonny +bonos +bonto +bonville +bood +book +bookish +books +boon +boor +boorish +boors +boot +booted +booties +bootless +boots +booty +bor +bora +borachio +bordeaux +border +bordered +borderers +borders +bore +boreas +bores +boring +born +borne +borough +boroughs +borrow +borrowed +borrower +borrowing +borrows +bosko +boskos +bosky +bosom +bosoms +boson +boss +bosworth +botch +botcher +botches +botchy +both +bots +bottle +bottled +bottles +bottom +bottomless +bottoms +bouciqualt +bouge +bough +boughs +bought +bounce +bouncing +bound +bounded +bounden +boundeth +bounding +boundless +bounds +bounteous +bounteously +bounties +bountiful +bountifully +bounty +bourbier +bourbon +bourchier +bourdeaux +bourn +bout +bouts +bove +bow +bowcase +bowed +bowels +bower +bowing +bowl +bowler +bowling +bowls +bows +bowsprit +bowstring +box +boxes +boy +boyet +boyish +boys +brabant +brabantio +brabble +brabbler +brac +brace +bracelet +bracelets +brach +bracy +brag +bragg +braggardism +braggards +braggart +braggarts +bragged +bragging +bragless +brags +braid +braided +brain +brained +brainford +brainish +brainless +brains +brainsick +brainsickly +brake +brakenbury +brakes +brambles +bran +branch +branches +branchless +brand +branded +brandish +brandon +brands +bras +brass +brassy +brat +brats +brav +brave +braved +bravely +braver +bravery +braves +bravest +braving +brawl +brawler +brawling +brawls +brawn +brawns +bray +braying +braz +brazen +brazier +breach +breaches +bread +breadth +break +breaker +breakfast +breaking +breaks +breast +breasted +breasting +breastplate +breasts +breath +breathe +breathed +breather +breathers +breathes +breathest +breathing +breathless +breaths +brecknock +bred +breech +breeches +breeching +breed +breeder +breeders +breeding +breeds +breese +breeze +breff +bretagne +brethen +bretheren +brethren +brevis +brevity +brew +brewage +brewer +brewers +brewing +brews +briareus +briars +brib +bribe +briber +bribes +brick +bricklayer +bricks +bridal +bride +bridegroom +bridegrooms +brides +bridge +bridgenorth +bridges +bridget +bridle +bridled +brief +briefer +briefest +briefly +briefness +brier +briers +brigandine +bright +brighten +brightest +brightly +brightness +brim +brimful +brims +brimstone +brinded +brine +bring +bringer +bringeth +bringing +bringings +brings +brinish +brink +brisk +brisky +bristle +bristled +bristly +bristol +bristow +britain +britaine +britaines +british +briton +britons +brittany +brittle +broach +broached +broad +broader +broadsides +brocas +brock +brogues +broil +broiling +broils +broke +broken +brokenly +broker +brokers +brokes +broking +brooch +brooches +brood +brooded +brooding +brook +brooks +broom +broomstaff +broth +brothel +brother +brotherhood +brotherhoods +brotherly +brothers +broths +brought +brow +brown +browner +brownist +browny +brows +browse +browsing +bruis +bruise +bruised +bruises +bruising +bruit +bruited +brundusium +brunt +brush +brushes +brute +brutish +brutus +bubble +bubbles +bubbling +bubukles +buck +bucket +buckets +bucking +buckingham +buckle +buckled +buckler +bucklers +bucklersbury +buckles +buckram +bucks +bud +budded +budding +budge +budger +budget +buds +buff +buffet +buffeting +buffets +bug +bugbear +bugle +bugs +build +builded +buildeth +building +buildings +builds +built +bulk +bulks +bull +bullcalf +bullen +bullens +bullet +bullets +bullocks +bulls +bully +bulmer +bulwark +bulwarks +bum +bumbast +bump +bumper +bums +bunch +bunches +bundle +bung +bunghole +bungle +bunting +buoy +bur +burbolt +burd +burden +burdened +burdening +burdenous +burdens +burgh +burgher +burghers +burglary +burgomasters +burgonet +burgundy +burial +buried +burier +buriest +burly +burn +burned +burnet +burneth +burning +burnish +burns +burnt +burr +burrows +burs +burst +bursting +bursts +burthen +burthens +burton +bury +burying +bush +bushels +bushes +bushy +busied +busily +busines +business +businesses +buskin +busky +buss +busses +bussing +bustle +bustling +busy +but +butcheed +butcher +butchered +butcheries +butcherly +butchers +butchery +butler +butt +butter +buttered +butterflies +butterfly +butterwoman +buttery +buttock +buttocks +button +buttonhole +buttons +buttress +buttry +butts +buxom +buy +buyer +buying +buys +buzz +buzzard +buzzards +buzzers +buzzing +by +bye +byzantium +c +ca +cabbage +cabileros +cabin +cabins +cable +cables +cackling +cacodemon +caddis +caddisses +cade +cadence +cadent +cades +cadmus +caduceus +cadwal +cadwallader +caelius +caelo +caesar +caesarion +caesars +cage +caged +cagion +cain +caithness +caitiff +caitiffs +caius +cak +cake +cakes +calaber +calais +calamities +calamity +calchas +calculate +calen +calendar +calendars +calf +caliban +calibans +calipolis +cality +caliver +call +callat +called +callet +calling +calls +calm +calmest +calmly +calmness +calms +calpurnia +calumniate +calumniating +calumnious +calumny +calve +calved +calves +calveskins +calydon +cam +cambio +cambria +cambric +cambrics +cambridge +cambyses +came +camel +camelot +camels +camest +camillo +camlet +camomile +camp +campeius +camping +camps +can +canakin +canaries +canary +cancel +cancell +cancelled +cancelling +cancels +cancer +candidatus +candied +candle +candles +candlesticks +candy +canidius +cank +canker +cankerblossom +cankers +cannibally +cannibals +cannon +cannoneer +cannons +cannot +canon +canoniz +canonize +canonized +canons +canopied +canopies +canopy +canst +canstick +canterbury +cantle +cantons +canus +canvas +canvass +canzonet +cap +capability +capable +capacities +capacity +caparison +capdv +cape +capel +capels +caper +capers +capet +caphis +capilet +capitaine +capital +capite +capitol +capitulate +capocchia +capon +capons +capp +cappadocia +capriccio +capricious +caps +capt +captain +captains +captainship +captious +captivate +captivated +captivates +captive +captives +captivity +captum +capucius +capulet +capulets +car +carack +caracks +carat +caraways +carbonado +carbuncle +carbuncled +carbuncles +carcanet +carcase +carcases +carcass +carcasses +card +cardecue +carded +carders +cardinal +cardinally +cardinals +cardmaker +cards +carduus +care +cared +career +careers +careful +carefully +careless +carelessly +carelessness +cares +caret +cargo +carl +carlisle +carlot +carman +carmen +carnal +carnally +carnarvonshire +carnation +carnations +carol +carous +carouse +caroused +carouses +carousing +carp +carpenter +carper +carpet +carpets +carping +carriage +carriages +carried +carrier +carriers +carries +carrion +carrions +carry +carrying +cars +cart +carters +carthage +carts +carv +carve +carved +carver +carves +carving +cas +casa +casaer +casca +case +casement +casements +cases +cash +cashier +casing +cask +casket +casketed +caskets +casque +casques +cassado +cassandra +cassibelan +cassio +cassius +cassocks +cast +castalion +castaway +castaways +casted +caster +castigate +castigation +castile +castiliano +casting +castle +castles +casts +casual +casually +casualties +casualty +cat +cataian +catalogue +cataplasm +cataracts +catarrhs +catastrophe +catch +catcher +catches +catching +cate +catechising +catechism +catechize +cater +caterpillars +caters +caterwauling +cates +catesby +cathedral +catlike +catling +catlings +cato +cats +cattle +caucasus +caudle +cauf +caught +cauldron +caus +cause +caused +causeless +causer +causes +causest +causeth +cautel +cautelous +cautels +cauterizing +caution +cautions +cavaleiro +cavalery +cavaliers +cave +cavern +caverns +caves +caveto +caviary +cavil +cavilling +cawdor +cawdron +cawing +ce +ceas +cease +ceases +ceaseth +cedar +cedars +cedius +celebrate +celebrated +celebrates +celebration +celerity +celestial +celia +cell +cellar +cellarage +celsa +cement +censer +censor +censorinus +censur +censure +censured +censurers +censures +censuring +centaur +centaurs +centre +cents +centuries +centurion +centurions +century +cerberus +cerecloth +cerements +ceremonial +ceremonies +ceremonious +ceremoniously +ceremony +ceres +cerns +certain +certainer +certainly +certainties +certainty +certes +certificate +certified +certifies +certify +ces +cesario +cess +cesse +cestern +cetera +cette +chaces +chaf +chafe +chafed +chafes +chaff +chaffless +chafing +chain +chains +chair +chairs +chalic +chalice +chalices +chalk +chalks +chalky +challeng +challenge +challenged +challenger +challengers +challenges +cham +chamber +chamberers +chamberlain +chamberlains +chambermaid +chambermaids +chambers +chameleon +champ +champagne +champain +champains +champion +champions +chanc +chance +chanced +chancellor +chances +chandler +chang +change +changeable +changed +changeful +changeling +changelings +changer +changes +changest +changing +channel +channels +chanson +chant +chanticleer +chanting +chantries +chantry +chants +chaos +chap +chape +chapel +chapeless +chapels +chaplain +chaplains +chapless +chaplet +chapmen +chaps +chapter +character +charactered +characterless +characters +charactery +characts +charbon +chare +chares +charg +charge +charged +chargeful +charges +chargeth +charging +chariest +chariness +charing +chariot +chariots +charitable +charitably +charities +charity +charlemain +charles +charm +charmed +charmer +charmeth +charmian +charming +charmingly +charms +charneco +charnel +charolois +charon +charter +charters +chartreux +chary +charybdis +chas +chase +chased +chaser +chaseth +chasing +chaste +chastely +chastis +chastise +chastised +chastisement +chastity +chat +chatham +chatillon +chats +chatt +chattels +chatter +chattering +chattles +chaud +chaunted +chaw +chawdron +che +cheap +cheapen +cheaper +cheapest +cheaply +cheapside +cheat +cheated +cheater +cheaters +cheating +cheats +check +checked +checker +checking +checks +cheek +cheeks +cheer +cheered +cheerer +cheerful +cheerfully +cheering +cheerless +cheerly +cheers +cheese +chequer +cher +cherish +cherished +cherisher +cherishes +cherishing +cherries +cherry +cherrypit +chertsey +cherub +cherubims +cherubin +cherubins +cheshu +chess +chest +chester +chestnut +chestnuts +chests +chetas +chev +cheval +chevalier +chevaliers +cheveril +chew +chewed +chewet +chewing +chez +chi +chick +chicken +chickens +chicurmurco +chid +chidden +chide +chiders +chides +chiding +chief +chiefest +chiefly +chien +child +childed +childeric +childhood +childhoods +childing +childish +childishness +childlike +childness +children +chill +chilling +chime +chimes +chimney +chimneypiece +chimneys +chimurcho +chin +china +chine +chines +chink +chinks +chins +chipp +chipper +chips +chiron +chirping +chirrah +chirurgeonly +chisel +chitopher +chivalrous +chivalry +choice +choicely +choicest +choir +choirs +chok +choke +choked +chokes +choking +choler +choleric +cholers +chollors +choose +chooser +chooses +chooseth +choosing +chop +chopine +choplogic +chopp +chopped +chopping +choppy +chops +chopt +chor +choristers +chorus +chose +chosen +chough +choughs +chrish +christ +christen +christendom +christendoms +christening +christenings +christian +christianlike +christians +christmas +christom +christopher +christophero +chronicle +chronicled +chronicler +chroniclers +chronicles +chrysolite +chuck +chucks +chud +chuffs +church +churches +churchman +churchmen +churchyard +churchyards +churl +churlish +churlishly +churls +churn +chus +cicatrice +cicatrices +cicely +cicero +ciceter +ciel +ciitzens +cilicia +cimber +cimmerian +cinable +cincture +cinders +cine +cinna +cinque +cipher +ciphers +circa +circe +circle +circled +circlets +circling +circuit +circum +circumcised +circumference +circummur +circumscrib +circumscribed +circumscription +circumspect +circumstance +circumstanced +circumstances +circumstantial +circumvent +circumvention +cistern +citadel +cital +cite +cited +cites +cities +citing +citizen +citizens +cittern +city +civet +civil +civility +civilly +clack +clad +claim +claiming +claims +clamb +clamber +clammer +clamor +clamorous +clamors +clamour +clamours +clang +clangor +clap +clapp +clapped +clapper +clapping +claps +clare +clarence +claret +claribel +clasp +clasps +clatter +claud +claudio +claudius +clause +claw +clawed +clawing +claws +clay +clays +clean +cleanliest +cleanly +cleans +cleanse +cleansing +clear +clearer +clearest +clearly +clearness +clears +cleave +cleaving +clef +cleft +cleitus +clemency +clement +cleomenes +cleopatpa +cleopatra +clepeth +clept +clerestories +clergy +clergyman +clergymen +clerk +clerkly +clerks +clew +client +clients +cliff +clifford +cliffords +cliffs +clifton +climate +climature +climb +climbed +climber +climbeth +climbing +climbs +clime +cling +clink +clinking +clinquant +clip +clipp +clipper +clippeth +clipping +clipt +clitus +clo +cloak +cloakbag +cloaks +clock +clocks +clod +cloddy +clodpole +clog +clogging +clogs +cloister +cloistress +cloquence +clos +close +closed +closely +closeness +closer +closes +closest +closet +closing +closure +cloten +clotens +cloth +clothair +clotharius +clothe +clothes +clothier +clothiers +clothing +cloths +clotpoles +clotpoll +cloud +clouded +cloudiness +clouds +cloudy +clout +clouted +clouts +cloven +clover +cloves +clovest +clowder +clown +clownish +clowns +cloy +cloyed +cloying +cloyless +cloyment +cloys +club +clubs +cluck +clung +clust +clusters +clutch +clyster +cneius +cnemies +co +coach +coaches +coachmakers +coact +coactive +coagulate +coal +coals +coarse +coarsely +coast +coasting +coasts +coat +coated +coats +cobble +cobbled +cobbler +cobham +cobloaf +cobweb +cobwebs +cock +cockatrice +cockatrices +cockle +cockled +cockney +cockpit +cocks +cocksure +coctus +cocytus +cod +codding +codling +codpiece +codpieces +cods +coelestibus +coesar +coeur +coffer +coffers +coffin +coffins +cog +cogging +cogitation +cogitations +cognition +cognizance +cogscomb +cohabitants +coher +cohere +coherence +coherent +cohorts +coif +coign +coil +coin +coinage +coiner +coining +coins +col +colbrand +colchos +cold +colder +coldest +coldly +coldness +coldspur +colebrook +colic +collar +collars +collateral +colleagued +collect +collected +collection +college +colleges +collied +collier +colliers +collop +collusion +colme +colmekill +coloquintida +color +colors +colossus +colour +colourable +coloured +colouring +colours +colt +colted +colts +columbine +columbines +colville +com +comagene +comart +comb +combat +combatant +combatants +combated +combating +combin +combinate +combination +combine +combined +combless +combustion +come +comedian +comedians +comedy +comeliness +comely +comer +comers +comes +comest +comet +cometh +comets +comfect +comfit +comfits +comfort +comfortable +comforted +comforter +comforting +comfortless +comforts +comic +comical +coming +comings +cominius +comma +command +commande +commanded +commander +commanders +commanding +commandment +commandments +commands +comme +commenc +commence +commenced +commencement +commences +commencing +commend +commendable +commendation +commendations +commended +commending +commends +comment +commentaries +commenting +comments +commerce +commingled +commiseration +commission +commissioners +commissions +commit +commits +committ +committed +committing +commix +commixed +commixtion +commixture +commodious +commodities +commodity +common +commonalty +commoner +commoners +commonly +commons +commonweal +commonwealth +commotion +commotions +commune +communicat +communicate +communication +communities +community +comonty +compact +companies +companion +companions +companionship +company +compar +comparative +compare +compared +comparing +comparison +comparisons +compartner +compass +compasses +compassing +compassion +compassionate +compeers +compel +compell +compelled +compelling +compels +compensation +competence +competency +competent +competitor +competitors +compil +compile +compiled +complain +complainer +complainest +complaining +complainings +complains +complaint +complaints +complement +complements +complete +complexion +complexioned +complexions +complices +complies +compliment +complimental +compliments +complot +complots +complotted +comply +compos +compose +composed +composition +compost +composture +composure +compound +compounded +compounds +comprehend +comprehended +comprehends +compremises +compris +comprising +compromis +compromise +compt +comptible +comptrollers +compulsatory +compulsion +compulsive +compunctious +computation +comrade +comrades +comutual +con +concave +concavities +conceal +concealed +concealing +concealment +concealments +conceals +conceit +conceited +conceitless +conceits +conceiv +conceive +conceived +conceives +conceiving +conception +conceptions +conceptious +concern +concernancy +concerneth +concerning +concernings +concerns +conclave +conclud +conclude +concluded +concludes +concluding +conclusion +conclusions +concolinel +concord +concubine +concupiscible +concupy +concur +concurring +concurs +condemn +condemnation +condemned +condemning +condemns +condescend +condign +condition +conditionally +conditions +condole +condolement +condoling +conduce +conduct +conducted +conducting +conductor +conduit +conduits +conected +coney +confection +confectionary +confections +confederacy +confederate +confederates +confer +conference +conferr +conferring +confess +confessed +confesses +confesseth +confessing +confession +confessions +confessor +confidence +confident +confidently +confin +confine +confined +confineless +confiners +confines +confining +confirm +confirmation +confirmations +confirmed +confirmer +confirmers +confirming +confirmities +confirms +confiscate +confiscated +confiscation +confixed +conflict +conflicting +conflicts +confluence +conflux +conform +conformable +confound +confounded +confounding +confounds +confront +confronted +confus +confused +confusedly +confusion +confusions +confutation +confutes +congeal +congealed +congealment +congee +conger +congest +congied +congratulate +congreeing +congreeted +congregate +congregated +congregation +congregations +congruent +congruing +conies +conjectural +conjecture +conjectures +conjoin +conjoined +conjoins +conjointly +conjunct +conjunction +conjunctive +conjur +conjuration +conjurations +conjure +conjured +conjurer +conjurers +conjures +conjuring +conjuro +conn +connected +connive +conqu +conquer +conquered +conquering +conqueror +conquerors +conquers +conquest +conquests +conquring +conrade +cons +consanguineous +consanguinity +conscienc +conscience +consciences +conscionable +consecrate +consecrated +consecrations +consent +consented +consenting +consents +consequence +consequences +consequently +conserve +conserved +conserves +consider +considerance +considerate +consideration +considerations +considered +considering +considerings +considers +consign +consigning +consist +consisteth +consisting +consistory +consists +consolate +consolation +consonancy +consonant +consort +consorted +consortest +conspectuities +conspir +conspiracy +conspirant +conspirator +conspirators +conspire +conspired +conspirers +conspires +conspiring +constable +constables +constance +constancies +constancy +constant +constantine +constantinople +constantly +constellation +constitution +constrain +constrained +constraineth +constrains +constraint +constring +construction +construe +consul +consuls +consulship +consulships +consult +consulting +consults +consum +consume +consumed +consumes +consuming +consummate +consummation +consumption +consumptions +contagion +contagious +contain +containing +contains +contaminate +contaminated +contemn +contemned +contemning +contemns +contemplate +contemplation +contemplative +contempt +contemptible +contempts +contemptuous +contemptuously +contend +contended +contending +contendon +content +contenta +contented +contenteth +contention +contentious +contentless +contento +contents +contest +contestation +continence +continency +continent +continents +continu +continual +continually +continuance +continuantly +continuate +continue +continued +continuer +continues +continuing +contract +contracted +contracting +contraction +contradict +contradicted +contradiction +contradicts +contraries +contrarieties +contrariety +contrarious +contrariously +contrary +contre +contribution +contributors +contrite +contriv +contrive +contrived +contriver +contrives +contriving +control +controll +controller +controlling +controlment +controls +controversy +contumelious +contumeliously +contumely +contusions +convenience +conveniences +conveniency +convenient +conveniently +convented +conventicles +convents +convers +conversant +conversation +conversations +converse +conversed +converses +conversing +conversion +convert +converted +convertest +converting +convertite +convertites +converts +convey +conveyance +conveyances +conveyers +conveying +convict +convicted +convince +convinced +convinces +convive +convocation +convoy +convulsions +cony +cook +cookery +cooks +cool +cooled +cooling +cools +coop +coops +cop +copatain +cope +cophetua +copied +copies +copious +copper +copperspur +coppice +copulation +copulatives +copy +cor +coragio +coral +coram +corambus +coranto +corantos +corbo +cord +corded +cordelia +cordial +cordis +cords +core +corin +corinth +corinthian +coriolanus +corioli +cork +corky +cormorant +corn +cornelia +cornelius +corner +corners +cornerstone +cornets +cornish +corns +cornuto +cornwall +corollary +coronal +coronation +coronet +coronets +corporal +corporals +corporate +corpse +corpulent +correct +corrected +correcting +correction +correctioner +corrects +correspondence +correspondent +corresponding +corresponsive +corrigible +corrival +corrivals +corroborate +corrosive +corrupt +corrupted +corrupter +corrupters +corruptible +corruptibly +corrupting +corruption +corruptly +corrupts +corse +corses +corslet +cosmo +cost +costard +costermongers +costlier +costly +costs +cot +cote +coted +cotsall +cotsole +cotswold +cottage +cottages +cotus +couch +couched +couching +couchings +coude +cough +coughing +could +couldst +coulter +council +councillor +councils +counsel +counsell +counsellor +counsellors +counselor +counselors +counsels +count +counted +countenanc +countenance +countenances +counter +counterchange +countercheck +counterfeit +counterfeited +counterfeiting +counterfeitly +counterfeits +countermand +countermands +countermines +counterpart +counterpoints +counterpois +counterpoise +counters +countervail +countess +countesses +counties +counting +countless +countries +countrv +country +countryman +countrymen +counts +county +couper +couple +coupled +couplement +couples +couplet +couplets +cour +courage +courageous +courageously +courages +courier +couriers +couronne +cours +course +coursed +courser +coursers +courses +coursing +court +courted +courteous +courteously +courtesan +courtesies +courtesy +courtezan +courtezans +courtier +courtiers +courtlike +courtly +courtney +courts +courtship +cousin +cousins +couterfeit +coutume +covenant +covenants +covent +coventry +cover +covered +covering +coverlet +covers +covert +covertly +coverture +covet +coveted +coveting +covetings +covetous +covetously +covetousness +covets +cow +coward +cowarded +cowardice +cowardly +cowards +cowardship +cowish +cowl +cowslip +cowslips +cox +coxcomb +coxcombs +coy +coystrill +coz +cozen +cozenage +cozened +cozener +cozeners +cozening +coziers +crab +crabbed +crabs +crack +cracked +cracker +crackers +cracking +cracks +cradle +cradled +cradles +craft +crafted +craftied +craftier +craftily +crafts +craftsmen +crafty +cram +cramm +cramp +cramps +crams +cranking +cranks +cranmer +crannied +crannies +cranny +crants +crare +crash +crassus +crav +crave +craved +craven +cravens +craves +craveth +craving +crawl +crawling +crawls +craz +crazed +crazy +creaking +cream +create +created +creates +creating +creation +creator +creature +creatures +credence +credent +credible +credit +creditor +creditors +credo +credulity +credulous +creed +creek +creeks +creep +creeping +creeps +crept +crescent +crescive +cressets +cressid +cressida +cressids +cressy +crest +crested +crestfall +crestless +crests +cretan +crete +crevice +crew +crews +crib +cribb +cribs +cricket +crickets +cried +criedst +crier +cries +criest +crieth +crime +crimeful +crimeless +crimes +criminal +crimson +cringe +cripple +crisp +crisped +crispian +crispianus +crispin +critic +critical +critics +croak +croaking +croaks +crocodile +cromer +cromwell +crone +crook +crookback +crooked +crooking +crop +cropp +crosby +cross +crossed +crosses +crossest +crossing +crossings +crossly +crossness +crost +crotchets +crouch +crouching +crow +crowd +crowded +crowding +crowds +crowflowers +crowing +crowkeeper +crown +crowned +crowner +crownet +crownets +crowning +crowns +crows +crudy +cruel +cruell +crueller +cruelly +cruels +cruelty +crum +crumble +crumbs +crupper +crusadoes +crush +crushed +crushest +crushing +crust +crusts +crusty +crutch +crutches +cry +crying +crystal +crystalline +crystals +cub +cubbert +cubiculo +cubit +cubs +cuckold +cuckoldly +cuckolds +cuckoo +cucullus +cudgel +cudgeled +cudgell +cudgelling +cudgels +cue +cues +cuff +cuffs +cuique +cull +culling +cullion +cullionly +cullions +culpable +culverin +cum +cumber +cumberland +cunning +cunningly +cunnings +cuore +cup +cupbearer +cupboarding +cupid +cupids +cuppele +cups +cur +curan +curate +curb +curbed +curbing +curbs +curd +curdied +curds +cure +cured +cureless +curer +cures +curfew +curing +curio +curiosity +curious +curiously +curl +curled +curling +curls +currance +currants +current +currents +currish +curry +curs +curse +cursed +curses +cursies +cursing +cursorary +curst +curster +curstest +curstness +cursy +curtail +curtain +curtains +curtal +curtis +curtle +curtsied +curtsies +curtsy +curvet +curvets +cushes +cushion +cushions +custalorum +custard +custody +custom +customary +customed +customer +customers +customs +custure +cut +cutler +cutpurse +cutpurses +cuts +cutter +cutting +cuttle +cxsar +cyclops +cydnus +cygnet +cygnets +cym +cymbals +cymbeline +cyme +cynic +cynthia +cypress +cypriot +cyprus +cyrus +cytherea +d +dabbled +dace +dad +daedalus +daemon +daff +daffed +daffest +daffodils +dagger +daggers +dagonet +daily +daintier +dainties +daintiest +daintily +daintiness +daintry +dainty +daisied +daisies +daisy +dale +dalliance +dallied +dallies +dally +dallying +dalmatians +dam +damage +damascus +damask +damasked +dame +dames +damm +damn +damnable +damnably +damnation +damned +damns +damoiselle +damon +damosella +damp +dams +damsel +damsons +dan +danc +dance +dancer +dances +dancing +dandle +dandy +dane +dang +danger +dangerous +dangerously +dangers +dangling +daniel +danish +dank +dankish +danskers +daphne +dappled +dapples +dar +dardan +dardanian +dardanius +dare +dared +dareful +dares +darest +daring +darius +dark +darken +darkening +darkens +darker +darkest +darkling +darkly +darkness +darling +darlings +darnel +darraign +dart +darted +darter +dartford +darting +darts +dash +dashes +dashing +dastard +dastards +dat +datchet +date +dated +dateless +dates +daub +daughter +daughters +daunt +daunted +dauntless +dauphin +daventry +davy +daw +dawn +dawning +daws +day +daylight +days +dazzle +dazzled +dazzling +de +dead +deadly +deaf +deafing +deafness +deafs +deal +dealer +dealers +dealest +dealing +dealings +deals +dealt +dean +deanery +dear +dearer +dearest +dearly +dearness +dears +dearth +dearths +death +deathbed +deathful +deaths +deathsman +deathsmen +debarred +debase +debate +debated +debatement +debateth +debating +debauch +debile +debility +debitor +debonair +deborah +debosh +debt +debted +debtor +debtors +debts +debuty +decay +decayed +decayer +decaying +decays +deceas +decease +deceased +deceit +deceitful +deceits +deceiv +deceivable +deceive +deceived +deceiver +deceivers +deceives +deceivest +deceiveth +deceiving +december +decent +deceptious +decerns +decide +decides +decimation +decipher +deciphers +decision +decius +deck +decking +decks +deckt +declare +declares +declension +declensions +declin +decline +declined +declines +declining +decoct +decorum +decreas +decrease +decreasing +decree +decreed +decrees +decrepit +dedicate +dedicated +dedicates +dedication +deed +deedless +deeds +deem +deemed +deep +deeper +deepest +deeply +deeps +deepvow +deer +deesse +defac +deface +defaced +defacer +defacers +defacing +defam +default +defeat +defeated +defeats +defeatures +defect +defective +defects +defence +defences +defend +defendant +defended +defender +defenders +defending +defends +defense +defensible +defensive +defer +deferr +defiance +deficient +defied +defies +defil +defile +defiler +defiles +defiling +define +definement +definite +definitive +definitively +deflow +deflower +deflowered +deform +deformed +deformities +deformity +deftly +defunct +defunction +defuse +defy +defying +degenerate +degraded +degree +degrees +deified +deifying +deign +deigned +deiphobus +deities +deity +deja +deject +dejected +delabreth +delay +delayed +delaying +delays +delectable +deliberate +delicate +delicates +delicious +deliciousness +delight +delighted +delightful +delights +delinquents +deliv +deliver +deliverance +delivered +delivering +delivers +delivery +delphos +deluded +deluding +deluge +delve +delver +delves +demand +demanded +demanding +demands +demean +demeanor +demeanour +demerits +demesnes +demetrius +demi +demigod +demise +demoiselles +demon +demonstrable +demonstrate +demonstrated +demonstrating +demonstration +demonstrative +demure +demurely +demuring +den +denay +deni +denial +denials +denied +denier +denies +deniest +denis +denmark +dennis +denny +denote +denoted +denotement +denounc +denounce +denouncing +dens +denunciation +deny +denying +deo +depart +departed +departest +departing +departure +depeche +depend +dependant +dependants +depended +dependence +dependences +dependency +dependent +dependents +depender +depending +depends +deplore +deploring +depopulate +depos +depose +deposed +deposing +depositaries +deprav +depravation +deprave +depraved +depraves +depress +depriv +deprive +depth +depths +deputation +depute +deputed +deputies +deputing +deputy +deracinate +derby +dercetas +dere +derides +derision +deriv +derivation +derivative +derive +derived +derives +derogate +derogately +derogation +des +desartless +descant +descend +descended +descending +descends +descension +descent +descents +describe +described +describes +descried +description +descriptions +descry +desdemon +desdemona +desert +deserts +deserv +deserve +deserved +deservedly +deserver +deservers +deserves +deservest +deserving +deservings +design +designment +designments +designs +desir +desire +desired +desirers +desires +desirest +desiring +desirous +desist +desk +desolate +desolation +desp +despair +despairing +despairs +despatch +desperate +desperately +desperation +despis +despise +despised +despiser +despiseth +despising +despite +despiteful +despoiled +dest +destin +destined +destinies +destiny +destitute +destroy +destroyed +destroyer +destroyers +destroying +destroys +destruction +destructions +det +detain +detains +detect +detected +detecting +detection +detector +detects +detention +determin +determinate +determination +determinations +determine +determined +determines +detest +detestable +detested +detesting +detests +detract +detraction +detractions +deucalion +deuce +deum +deux +devant +devesting +device +devices +devil +devilish +devils +devis +devise +devised +devises +devising +devoid +devonshire +devote +devoted +devotion +devour +devoured +devourers +devouring +devours +devout +devoutly +dew +dewberries +dewdrops +dewlap +dewlapp +dews +dewy +dexter +dexteriously +dexterity +di +diable +diablo +diadem +dial +dialect +dialogue +dialogued +dials +diameter +diamond +diamonds +dian +diana +diaper +dibble +dic +dice +dicers +dich +dick +dickens +dickon +dicky +dictator +diction +dictynna +did +diddle +didest +dido +didst +die +died +diedst +dies +diest +diet +dieted +dieter +dieu +diff +differ +difference +differences +differency +different +differing +differs +difficile +difficult +difficulties +difficulty +diffidence +diffidences +diffus +diffused +diffusest +dig +digest +digested +digestion +digestions +digg +digging +dighton +dignified +dignifies +dignify +dignities +dignity +digress +digressing +digression +digs +digt +dilate +dilated +dilations +dilatory +dild +dildos +dilemma +dilemmas +diligence +diligent +diluculo +dim +dimension +dimensions +diminish +diminishing +diminution +diminutive +diminutives +dimm +dimmed +dimming +dimpled +dimples +dims +din +dine +dined +diner +dines +ding +dining +dinner +dinners +dinnertime +dint +diomed +diomede +diomedes +dion +dip +dipp +dipping +dips +dir +dire +direct +directed +directing +direction +directions +directitude +directive +directly +directs +direful +direness +direst +dirge +dirges +dirt +dirty +dis +disability +disable +disabled +disabling +disadvantage +disagree +disallow +disanimates +disannul +disannuls +disappointed +disarm +disarmed +disarmeth +disarms +disaster +disasters +disastrous +disbench +disbranch +disburdened +disburs +disburse +disbursed +discandy +discandying +discard +discarded +discase +discased +discern +discerner +discerning +discernings +discerns +discharg +discharge +discharged +discharging +discipled +disciples +disciplin +discipline +disciplined +disciplines +disclaim +disclaiming +disclaims +disclos +disclose +disclosed +discloses +discolour +discoloured +discolours +discomfit +discomfited +discomfiture +discomfort +discomfortable +discommend +disconsolate +discontent +discontented +discontentedly +discontenting +discontents +discontinue +discontinued +discord +discordant +discords +discourse +discoursed +discourser +discourses +discoursive +discourtesy +discov +discover +discovered +discoverers +discoveries +discovering +discovers +discovery +discredit +discredited +discredits +discreet +discreetly +discretion +discretions +discuss +disdain +disdained +disdaineth +disdainful +disdainfully +disdaining +disdains +disdnguish +diseas +disease +diseased +diseases +disedg +disembark +disfigure +disfigured +disfurnish +disgorge +disgrac +disgrace +disgraced +disgraceful +disgraces +disgracing +disgracious +disguis +disguise +disguised +disguiser +disguises +disguising +dish +dishabited +dishclout +dishearten +disheartens +dishes +dishonest +dishonestly +dishonesty +dishonor +dishonorable +dishonors +dishonour +dishonourable +dishonoured +dishonours +disinherit +disinherited +disjoin +disjoining +disjoins +disjoint +disjunction +dislik +dislike +disliken +dislikes +dislimns +dislocate +dislodg +disloyal +disloyalty +dismal +dismantle +dismantled +dismask +dismay +dismayed +dismemb +dismember +dismes +dismiss +dismissed +dismissing +dismission +dismount +dismounted +disnatur +disobedience +disobedient +disobey +disobeys +disorb +disorder +disordered +disorderly +disorders +disparage +disparagement +disparagements +dispark +dispatch +dispensation +dispense +dispenses +dispers +disperse +dispersed +dispersedly +dispersing +dispiteous +displac +displace +displaced +displant +displanting +display +displayed +displeas +displease +displeased +displeasing +displeasure +displeasures +disponge +disport +disports +dispos +dispose +disposed +disposer +disposing +disposition +dispositions +dispossess +dispossessing +disprais +dispraise +dispraising +dispraisingly +dispropertied +disproportion +disproportioned +disprov +disprove +disproved +dispursed +disputable +disputation +disputations +dispute +disputed +disputes +disputing +disquantity +disquiet +disquietly +disrelish +disrobe +disseat +dissemble +dissembled +dissembler +dissemblers +dissembling +dissembly +dissension +dissensions +dissentious +dissever +dissipation +dissolute +dissolutely +dissolution +dissolutions +dissolv +dissolve +dissolved +dissolves +dissuade +dissuaded +distaff +distaffs +distain +distains +distance +distant +distaste +distasted +distasteful +distemp +distemper +distemperature +distemperatures +distempered +distempering +distil +distill +distillation +distilled +distills +distilment +distinct +distinction +distinctly +distingue +distinguish +distinguishes +distinguishment +distract +distracted +distractedly +distraction +distractions +distracts +distrain +distraught +distress +distressed +distresses +distressful +distribute +distributed +distribution +distrust +distrustful +disturb +disturbed +disturbers +disturbing +disunite +disvalued +disvouch +dit +ditch +ditchers +ditches +dites +ditties +ditty +diurnal +div +dive +diver +divers +diversely +diversity +divert +diverted +diverts +dives +divest +dividable +dividant +divide +divided +divides +divideth +divin +divination +divine +divinely +divineness +diviner +divines +divinest +divining +divinity +division +divisions +divorc +divorce +divorced +divorcement +divorcing +divulg +divulge +divulged +divulging +dizy +dizzy +do +doating +dobbin +dock +docks +doct +doctor +doctors +doctrine +document +dodge +doe +doer +doers +does +doest +doff +dog +dogberry +dogfish +dogg +dogged +dogs +doigts +doing +doings +doit +doits +dolabella +dole +doleful +doll +dollar +dollars +dolor +dolorous +dolour +dolours +dolphin +dolt +dolts +domestic +domestics +dominance +dominations +dominator +domine +domineer +domineering +dominical +dominion +dominions +domitius +dommelton +don +donalbain +donation +donc +doncaster +done +dong +donn +donne +donner +donnerai +doom +doomsday +door +doorkeeper +doors +dorcas +doreus +doricles +dormouse +dorothy +dorset +dorsetshire +dost +dotage +dotant +dotard +dotards +dote +doted +doters +dotes +doteth +doth +doting +double +doubled +doubleness +doubler +doublet +doublets +doubling +doubly +doubt +doubted +doubtful +doubtfully +doubting +doubtless +doubts +doug +dough +doughty +doughy +douglas +dout +doute +douts +dove +dovehouse +dover +doves +dow +dowager +dowdy +dower +dowerless +dowers +dowlas +dowle +down +downfall +downright +downs +downstairs +downtrod +downward +downwards +downy +dowries +dowry +dowsabel +doxy +dozed +dozen +dozens +dozy +drab +drabbing +drabs +drachma +drachmas +draff +drag +dragg +dragged +dragging +dragon +dragonish +dragons +drain +drained +drains +drake +dram +dramatis +drank +draught +draughts +drave +draw +drawbridge +drawer +drawers +draweth +drawing +drawling +drawn +draws +drayman +draymen +dread +dreaded +dreadful +dreadfully +dreading +dreads +dream +dreamer +dreamers +dreaming +dreams +dreamt +drearning +dreary +dreg +dregs +drench +drenched +dress +dressed +dresser +dressing +dressings +drest +drew +dribbling +dried +drier +dries +drift +drily +drink +drinketh +drinking +drinkings +drinks +driv +drive +drivelling +driven +drives +driveth +driving +drizzle +drizzled +drizzles +droit +drollery +dromio +dromios +drone +drones +droop +droopeth +drooping +droops +drop +dropheir +droplets +dropp +dropper +droppeth +dropping +droppings +drops +dropsied +dropsies +dropsy +dropt +dross +drossy +drought +drove +droven +drovier +drown +drowned +drowning +drowns +drows +drowse +drowsily +drowsiness +drowsy +drudge +drudgery +drudges +drug +drugg +drugs +drum +drumble +drummer +drumming +drums +drunk +drunkard +drunkards +drunken +drunkenly +drunkenness +dry +dryness +dst +du +dub +dubb +ducat +ducats +ducdame +duchess +duchies +duchy +duck +ducking +ducks +dudgeon +due +duellist +duello +duer +dues +duff +dug +dugs +duke +dukedom +dukedoms +dukes +dulcet +dulche +dull +dullard +duller +dullest +dulling +dullness +dulls +dully +dulness +duly +dumain +dumb +dumbe +dumbly +dumbness +dump +dumps +dun +duncan +dung +dungeon +dungeons +dunghill +dunghills +dungy +dunnest +dunsinane +dunsmore +dunstable +dupp +durance +during +durst +dusky +dust +dusted +dusty +dutch +dutchman +duteous +duties +dutiful +duty +dwarf +dwarfish +dwell +dwellers +dwelling +dwells +dwelt +dwindle +dy +dye +dyed +dyer +dying +e +each +eager +eagerly +eagerness +eagle +eagles +eaning +eanlings +ear +earing +earl +earldom +earlier +earliest +earliness +earls +early +earn +earned +earnest +earnestly +earnestness +earns +ears +earth +earthen +earthlier +earthly +earthquake +earthquakes +earthy +eas +ease +eased +easeful +eases +easier +easiest +easiliest +easily +easiness +easing +east +eastcheap +easter +eastern +eastward +easy +eat +eaten +eater +eaters +eating +eats +eaux +eaves +ebb +ebbing +ebbs +ebon +ebony +ebrew +ecce +echapper +echo +echoes +eclips +eclipse +eclipses +ecolier +ecoutez +ecstacy +ecstasies +ecstasy +ecus +eden +edg +edgar +edge +edged +edgeless +edges +edict +edicts +edifice +edifices +edified +edifies +edition +edm +edmund +edmunds +edmundsbury +educate +educated +education +edward +eel +eels +effect +effected +effectless +effects +effectual +effectually +effeminate +effigies +effus +effuse +effusion +eftest +egal +egally +eget +egeus +egg +eggs +eggshell +eglamour +eglantine +egma +ego +egregious +egregiously +egress +egypt +egyptian +egyptians +eie +eight +eighteen +eighth +eightpenny +eighty +eisel +either +eject +eke +el +elbe +elbow +elbows +eld +elder +elders +eldest +eleanor +elect +elected +election +elegancy +elegies +element +elements +elephant +elephants +elevated +eleven +eleventh +elf +elflocks +eliads +elinor +elizabeth +ell +elle +ellen +elm +eloquence +eloquent +else +elsewhere +elsinore +eltham +elves +elvish +ely +elysium +em +emballing +embalm +embalms +embark +embarked +embarquements +embassade +embassage +embassies +embassy +embattailed +embattl +embattle +embay +embellished +embers +emblaze +emblem +emblems +embodied +embold +emboldens +emboss +embossed +embounded +embowel +embowell +embrac +embrace +embraced +embracement +embracements +embraces +embracing +embrasures +embroider +embroidery +emhracing +emilia +eminence +eminent +eminently +emmanuel +emnity +empale +emperal +emperess +emperial +emperor +empery +emphasis +empire +empirics +empiricutic +empleached +employ +employed +employer +employment +employments +empoison +empress +emptied +emptier +empties +emptiness +empty +emptying +emulate +emulation +emulations +emulator +emulous +en +enact +enacted +enacts +enactures +enamell +enamelled +enamour +enamoured +enanmour +encamp +encamped +encave +enceladus +enchaf +enchafed +enchant +enchanted +enchanting +enchantingly +enchantment +enchantress +enchants +enchas +encircle +encircled +enclos +enclose +enclosed +encloses +encloseth +enclosing +enclouded +encompass +encompassed +encompasseth +encompassment +encore +encorporal +encount +encounter +encountered +encounters +encourage +encouraged +encouragement +encrimsoned +encroaching +encumb +end +endamage +endamagement +endanger +endart +endear +endeared +endeavour +endeavours +ended +ender +ending +endings +endite +endless +endow +endowed +endowments +endows +ends +endu +endue +endur +endurance +endure +endured +endures +enduring +endymion +eneas +enemies +enemy +enernies +enew +enfeebled +enfeebles +enfeoff +enfetter +enfoldings +enforc +enforce +enforced +enforcedly +enforcement +enforces +enforcest +enfranched +enfranchis +enfranchise +enfranchised +enfranchisement +enfreed +enfreedoming +engag +engage +engaged +engagements +engaging +engaol +engend +engender +engenders +engilds +engine +engineer +enginer +engines +engirt +england +english +englishman +englishmen +engluts +englutted +engraffed +engraft +engrafted +engrav +engrave +engross +engrossed +engrossest +engrossing +engrossments +enguard +enigma +enigmatical +enjoin +enjoined +enjoy +enjoyed +enjoyer +enjoying +enjoys +enkindle +enkindled +enlard +enlarg +enlarge +enlarged +enlargement +enlargeth +enlighten +enlink +enmesh +enmities +enmity +ennoble +ennobled +enobarb +enobarbus +enon +enormity +enormous +enough +enow +enpatron +enpierced +enquir +enquire +enquired +enrag +enrage +enraged +enrages +enrank +enrapt +enrich +enriched +enriches +enridged +enrings +enrob +enrobe +enroll +enrolled +enrooted +enrounded +enschedul +ensconce +ensconcing +enseamed +ensear +enseigne +enseignez +ensemble +enshelter +enshielded +enshrines +ensign +ensigns +enskied +ensman +ensnare +ensnared +ensnareth +ensteep +ensu +ensue +ensued +ensues +ensuing +enswathed +ent +entail +entame +entangled +entangles +entendre +enter +entered +entering +enterprise +enterprises +enters +entertain +entertained +entertainer +entertaining +entertainment +entertainments +enthrall +enthralled +enthron +enthroned +entice +enticements +enticing +entire +entirely +entitle +entitled +entitling +entomb +entombed +entrails +entrance +entrances +entrap +entrapp +entre +entreat +entreated +entreaties +entreating +entreatments +entreats +entreaty +entrench +entry +entwist +envelop +envenom +envenomed +envenoms +envied +envies +envious +enviously +environ +environed +envoy +envy +envying +enwheel +enwombed +enwraps +ephesian +ephesians +ephesus +epicure +epicurean +epicures +epicurism +epicurus +epidamnum +epidaurus +epigram +epilepsy +epileptic +epilogue +epilogues +epistles +epistrophus +epitaph +epitaphs +epithet +epitheton +epithets +epitome +equal +equalities +equality +equall +equally +equalness +equals +equinoctial +equinox +equipage +equity +equivocal +equivocate +equivocates +equivocation +equivocator +er +erbear +erbearing +erbears +erbeat +erblows +erboard +erborne +ercame +ercast +ercharg +ercharged +ercharging +ercles +ercome +ercover +ercrows +erdoing +ere +erebus +erect +erected +erecting +erection +erects +erewhile +erflourish +erflow +erflowing +erflows +erfraught +erga +ergalled +erglanced +ergo +ergone +ergrow +ergrown +ergrowth +erhang +erhanging +erhasty +erhear +erheard +eringoes +erjoy +erleap +erleaps +erleavens +erlook +erlooking +ermaster +ermengare +ermount +ern +ernight +eros +erpaid +erparted +erpast +erpays +erpeer +erperch +erpicturing +erpingham +erposting +erpow +erpress +erpressed +err +errand +errands +errant +errate +erraught +erreaches +erred +errest +erring +erroneous +error +errors +errs +errule +errun +erset +ershade +ershades +ershine +ershot +ersized +erskip +erslips +erspreads +erst +erstare +erstep +erstunk +ersway +ersways +erswell +erta +ertake +erteemed +erthrow +erthrown +erthrows +ertook +ertop +ertopping +ertrip +erturn +erudition +eruption +eruptions +ervalues +erwalk +erwatch +erween +erweens +erweigh +erweighs +erwhelm +erwhelmed +erworn +es +escalus +escap +escape +escaped +escapes +eschew +escoted +esill +especial +especially +esperance +espials +espied +espies +espous +espouse +espy +esquire +esquires +essay +essays +essence +essential +essentially +esses +essex +est +establish +established +estate +estates +esteem +esteemed +esteemeth +esteeming +esteems +estimable +estimate +estimation +estimations +estime +estranged +estridge +estridges +et +etc +etceteras +ete +eternal +eternally +eterne +eternity +eterniz +etes +ethiop +ethiope +ethiopes +ethiopian +etna +eton +etre +eunuch +eunuchs +euphrates +euphronius +euriphile +europa +europe +ev +evade +evades +evans +evasion +evasions +eve +even +evening +evenly +event +eventful +events +ever +everlasting +everlastingly +evermore +every +everyone +everything +everywhere +evidence +evidences +evident +evil +evilly +evils +evitate +ewe +ewer +ewers +ewes +exact +exacted +exactest +exacting +exaction +exactions +exactly +exacts +exalt +exalted +examin +examination +examinations +examine +examined +examines +exampl +example +exampled +examples +exasperate +exasperates +exceed +exceeded +exceedeth +exceeding +exceedingly +exceeds +excel +excelled +excellence +excellencies +excellency +excellent +excellently +excelling +excels +except +excepted +excepting +exception +exceptions +exceptless +excess +excessive +exchang +exchange +exchanged +exchequer +exchequers +excite +excited +excitements +excites +exclaim +exclaims +exclamation +exclamations +excludes +excommunicate +excommunication +excrement +excrements +excursion +excursions +excus +excusable +excuse +excused +excuses +excusez +excusing +execrable +execrations +execute +executed +executing +execution +executioner +executioners +executor +executors +exempt +exempted +exequies +exercise +exercises +exeter +exeunt +exhal +exhalation +exhalations +exhale +exhales +exhaust +exhibit +exhibiters +exhibition +exhort +exhortation +exigent +exil +exile +exiled +exion +exist +exists +exit +exits +exorciser +exorcisms +exorcist +expect +expectance +expectancy +expectation +expectations +expected +expecters +expecting +expects +expedience +expedient +expediently +expedition +expeditious +expel +expell +expelling +expels +expend +expense +expenses +experienc +experience +experiences +experiment +experimental +experiments +expert +expertness +expiate +expiation +expir +expiration +expire +expired +expires +expiring +explication +exploit +exploits +expos +expose +exposing +exposition +expositor +expostulate +expostulation +exposture +exposure +expound +expounded +express +expressed +expresseth +expressing +expressive +expressly +expressure +expuls +expulsion +exquisite +exsufflicate +extant +extemporal +extemporally +extempore +extend +extended +extends +extent +extenuate +extenuated +extenuates +extenuation +exterior +exteriorly +exteriors +extermin +extern +external +extinct +extincted +extincture +extinguish +extirp +extirpate +extirped +extol +extoll +extolment +exton +extort +extorted +extortion +extortions +extra +extract +extracted +extracting +extraordinarily +extraordinary +extraught +extravagancy +extravagant +extreme +extremely +extremes +extremest +extremities +extremity +exuent +exult +exultation +ey +eyas +eyases +eye +eyeball +eyeballs +eyebrow +eyebrows +eyed +eyeless +eyelid +eyelids +eyes +eyesight +eyestrings +eying +eyne +eyrie +fa +fabian +fable +fables +fabric +fabulous +fac +face +faced +facere +faces +faciant +facile +facility +facinerious +facing +facit +fact +faction +factionary +factions +factious +factor +factors +faculties +faculty +fade +faded +fadeth +fadge +fading +fadings +fadom +fadoms +fagot +fagots +fail +failing +fails +fain +faint +fainted +fainter +fainting +faintly +faintness +faints +fair +fairer +fairest +fairies +fairing +fairings +fairly +fairness +fairs +fairwell +fairy +fais +fait +faites +faith +faithful +faithfull +faithfully +faithless +faiths +faitors +fal +falchion +falcon +falconbridge +falconer +falconers +fall +fallacy +fallen +falleth +falliable +fallible +falling +fallow +fallows +falls +fally +falorous +false +falsehood +falsely +falseness +falser +falsify +falsing +falstaff +falstaffs +falter +fam +fame +famed +familiar +familiarity +familiarly +familiars +family +famine +famish +famished +famous +famoused +famously +fan +fanatical +fancies +fancy +fane +fanes +fang +fangled +fangless +fangs +fann +fanning +fans +fantasied +fantasies +fantastic +fantastical +fantastically +fantasticoes +fantasy +fap +far +farborough +farced +fardel +fardels +fare +fares +farewell +farewells +fariner +faring +farm +farmer +farmhouse +farms +farre +farrow +farther +farthest +farthing +farthingale +farthingales +farthings +fartuous +fas +fashion +fashionable +fashioning +fashions +fast +fasted +fasten +fastened +faster +fastest +fasting +fastly +fastolfe +fasts +fat +fatal +fatally +fate +fated +fates +father +fathered +fatherless +fatherly +fathers +fathom +fathomless +fathoms +fatigate +fatness +fats +fatted +fatter +fattest +fatting +fatuus +fauconbridge +faulconbridge +fault +faultiness +faultless +faults +faulty +fausse +fauste +faustuses +faut +favor +favorable +favorably +favors +favour +favourable +favoured +favouredly +favourer +favourers +favouring +favourite +favourites +favours +favout +fawn +fawneth +fawning +fawns +fay +fe +fealty +fear +feared +fearest +fearful +fearfull +fearfully +fearfulness +fearing +fearless +fears +feast +feasted +feasting +feasts +feat +feated +feater +feather +feathered +feathers +featly +feats +featur +feature +featured +featureless +features +february +fecks +fed +fedary +federary +fee +feeble +feebled +feebleness +feebling +feebly +feed +feeder +feeders +feedeth +feeding +feeds +feel +feeler +feeling +feelingly +feels +fees +feet +fehemently +feign +feigned +feigning +feil +feith +felicitate +felicity +fell +fellest +fellies +fellow +fellowly +fellows +fellowship +fellowships +fells +felon +felonious +felony +felt +female +females +feminine +fen +fenc +fence +fencer +fencing +fends +fennel +fenny +fens +fenton +fer +ferdinand +fere +fernseed +ferrara +ferrers +ferret +ferry +ferryman +fertile +fertility +fervency +fervour +fery +fest +feste +fester +festinate +festinately +festival +festivals +fet +fetch +fetches +fetching +fetlock +fetlocks +fett +fetter +fettering +fetters +fettle +feu +feud +fever +feverous +fevers +few +fewer +fewest +fewness +fickle +fickleness +fico +fiction +fiddle +fiddler +fiddlestick +fidele +fidelicet +fidelity +fidius +fie +field +fielded +fields +fiend +fiends +fierce +fiercely +fierceness +fiery +fife +fifes +fifteen +fifteens +fifteenth +fifth +fifty +fiftyfold +fig +fight +fighter +fightest +fighteth +fighting +fights +figo +figs +figur +figure +figured +figures +figuring +fike +fil +filberts +filch +filches +filching +file +filed +files +filial +filius +fill +filled +fillet +filling +fillip +fills +filly +film +fils +filth +filths +filthy +fin +finally +finch +find +finder +findeth +finding +findings +finds +fine +fineless +finely +finem +fineness +finer +fines +finest +fing +finger +fingering +fingers +fingre +fingres +finical +finish +finished +finisher +finless +finn +fins +finsbury +fir +firago +fire +firebrand +firebrands +fired +fires +firework +fireworks +firing +firk +firm +firmament +firmly +firmness +first +firstlings +fish +fisher +fishermen +fishers +fishes +fishified +fishmonger +fishpond +fisnomy +fist +fisting +fists +fistula +fit +fitchew +fitful +fitly +fitment +fitness +fits +fitted +fitter +fittest +fitteth +fitting +fitzwater +five +fivepence +fives +fix +fixed +fixes +fixeth +fixing +fixture +fl +flag +flagging +flagon +flagons +flags +flail +flakes +flaky +flam +flame +flamen +flamens +flames +flaming +flaminius +flanders +flannel +flap +flaring +flash +flashes +flashing +flask +flat +flatly +flatness +flats +flatt +flatter +flattered +flatterer +flatterers +flatterest +flatteries +flattering +flatters +flattery +flaunts +flavio +flavius +flaw +flaws +flax +flaxen +flay +flaying +flea +fleance +fleas +flecked +fled +fledge +flee +fleec +fleece +fleeces +fleer +fleering +fleers +fleet +fleeter +fleeting +fleming +flemish +flesh +fleshes +fleshly +fleshment +fleshmonger +flew +flexible +flexure +flibbertigibbet +flickering +flidge +fliers +flies +flieth +flight +flights +flighty +flinch +fling +flint +flints +flinty +flirt +float +floated +floating +flock +flocks +flood +floodgates +floods +floor +flora +florence +florentine +florentines +florentius +florizel +flote +floulish +flour +flourish +flourishes +flourisheth +flourishing +flout +flouted +flouting +flouts +flow +flowed +flower +flowerets +flowers +flowing +flown +flows +fluellen +fluent +flung +flush +flushing +fluster +flute +flutes +flutter +flux +fluxive +fly +flying +fo +foal +foals +foam +foamed +foaming +foams +foamy +fob +focative +fodder +foe +foeman +foemen +foes +fog +foggy +fogs +foh +foi +foil +foiled +foils +foin +foining +foins +fois +foison +foisons +foist +foix +fold +folded +folds +folio +folk +folks +follies +follow +followed +follower +followers +followest +following +follows +folly +fond +fonder +fondly +fondness +font +fontibell +food +fool +fooleries +foolery +foolhardy +fooling +foolish +foolishly +foolishness +fools +foot +football +footboy +footboys +footed +footfall +footing +footman +footmen +footpath +footsteps +footstool +fopp +fopped +foppery +foppish +fops +for +forage +foragers +forbade +forbear +forbearance +forbears +forbid +forbidden +forbiddenly +forbids +forbod +forborne +forc +force +forced +forceful +forceless +forces +forcible +forcibly +forcing +ford +fordid +fordo +fordoes +fordone +fore +forecast +forefather +forefathers +forefinger +forego +foregone +forehand +forehead +foreheads +forehorse +foreign +foreigner +foreigners +foreknowing +foreknowledge +foremost +forenamed +forenoon +forerun +forerunner +forerunning +foreruns +foresaid +foresaw +foresay +foresee +foreseeing +foresees +foreshow +foreskirt +forespent +forest +forestall +forestalled +forester +foresters +forests +foretell +foretelling +foretells +forethink +forethought +foretold +forever +foreward +forewarn +forewarned +forewarning +forfeit +forfeited +forfeiters +forfeiting +forfeits +forfeiture +forfeitures +forfend +forfended +forg +forgave +forge +forged +forgeries +forgery +forges +forget +forgetful +forgetfulness +forgetive +forgets +forgetting +forgive +forgiven +forgiveness +forgo +forgoing +forgone +forgot +forgotten +fork +forked +forks +forlorn +form +formal +formally +formed +former +formerly +formless +forms +fornication +fornications +fornicatress +forres +forrest +forsake +forsaken +forsaketh +forslow +forsook +forsooth +forspent +forspoke +forswear +forswearing +forswore +forsworn +fort +forted +forth +forthcoming +forthlight +forthright +forthwith +fortification +fortifications +fortified +fortifies +fortify +fortinbras +fortitude +fortnight +fortress +fortresses +forts +fortun +fortuna +fortunate +fortunately +fortune +fortuned +fortunes +fortward +forty +forum +forward +forwarding +forwardness +forwards +forwearied +fosset +fost +foster +fostered +fought +foughten +foul +fouler +foulest +foully +foulness +found +foundation +foundations +founded +founder +fount +fountain +fountains +founts +four +fourscore +fourteen +fourth +foutra +fowl +fowler +fowling +fowls +fox +foxes +foxship +fracted +fraction +fractions +fragile +fragment +fragments +fragrant +frail +frailer +frailties +frailty +fram +frame +framed +frames +frampold +fran +francais +france +frances +franchise +franchised +franchisement +franchises +franciae +francis +francisca +franciscan +francisco +frank +franker +frankfort +franklin +franklins +frankly +frankness +frantic +franticly +frateretto +fratrum +fraud +fraudful +fraught +fraughtage +fraughting +fray +frays +freckl +freckled +freckles +frederick +free +freed +freedom +freedoms +freehearted +freelier +freely +freeman +freemen +freeness +freer +frees +freestone +freetown +freeze +freezes +freezing +freezings +french +frenchman +frenchmen +frenchwoman +frenzy +frequent +frequents +fresh +fresher +freshes +freshest +freshly +freshness +fret +fretful +frets +fretted +fretten +fretting +friar +friars +friday +fridays +friend +friended +friending +friendless +friendliness +friendly +friends +friendship +friendships +frieze +fright +frighted +frightened +frightful +frighting +frights +fringe +fringed +frippery +frisk +fritters +frivolous +fro +frock +frog +frogmore +froissart +frolic +from +front +fronted +frontier +frontiers +fronting +frontlet +fronts +frost +frosts +frosty +froth +froward +frown +frowning +frowningly +frowns +froze +frozen +fructify +frugal +fruit +fruiterer +fruitful +fruitfully +fruitfulness +fruition +fruitless +fruits +frush +frustrate +frutify +fry +fubb +fuel +fugitive +fulfil +fulfill +fulfilling +fulfils +full +fullam +fuller +fullers +fullest +fullness +fully +fulness +fulsome +fulvia +fum +fumble +fumbles +fumblest +fumbling +fume +fumes +fuming +fumiter +fumitory +fun +function +functions +fundamental +funeral +funerals +fur +furbish +furies +furious +furlongs +furnace +furnaces +furnish +furnished +furnishings +furniture +furnival +furor +furr +furrow +furrowed +furrows +furth +further +furtherance +furtherer +furthermore +furthest +fury +furze +furzes +fust +fustian +fustilarian +fusty +fut +future +futurity +g +gabble +gaberdine +gabriel +gad +gadding +gads +gadshill +gag +gage +gaged +gagg +gaging +gagne +gain +gained +gainer +gaingiving +gains +gainsaid +gainsay +gainsaying +gainsays +gainst +gait +gaited +galathe +gale +galen +gales +gall +gallant +gallantly +gallantry +gallants +galled +gallery +galley +galleys +gallia +gallian +galliard +galliasses +gallimaufry +galling +gallons +gallop +galloping +gallops +gallow +galloway +gallowglasses +gallows +gallowses +galls +gallus +gam +gambol +gambold +gambols +gamboys +game +gamers +games +gamesome +gamester +gaming +gammon +gamut +gan +gangren +ganymede +gaol +gaoler +gaolers +gaols +gap +gape +gapes +gaping +gar +garb +garbage +garboils +garcon +gard +garde +garden +gardener +gardeners +gardens +gardez +gardiner +gardon +gargantua +gargrave +garish +garland +garlands +garlic +garment +garments +garmet +garner +garners +garnish +garnished +garret +garrison +garrisons +gart +garter +garterd +gartering +garters +gascony +gash +gashes +gaskins +gasp +gasping +gasted +gastness +gat +gate +gated +gates +gath +gather +gathered +gathering +gathers +gatories +gatory +gaud +gaudeo +gaudy +gauge +gaul +gaultree +gaunt +gauntlet +gauntlets +gav +gave +gavest +gawded +gawds +gawsey +gay +gayness +gaz +gaze +gazed +gazer +gazers +gazes +gazeth +gazing +gear +geck +geese +geffrey +geld +gelded +gelding +gelida +gelidus +gelt +gem +geminy +gems +gen +gender +genders +general +generally +generals +generation +generations +generative +generosity +generous +genitive +genitivo +genius +gennets +genoa +genoux +gens +gent +gentilhomme +gentility +gentle +gentlefolks +gentleman +gentlemanlike +gentlemen +gentleness +gentler +gentles +gentlest +gentlewoman +gentlewomen +gently +gentry +george +gerard +germaines +germains +german +germane +germans +germany +gertrude +gest +gests +gesture +gestures +get +getrude +gets +getter +getting +ghastly +ghost +ghosted +ghostly +ghosts +gi +giant +giantess +giantlike +giants +gib +gibber +gibbet +gibbets +gibe +giber +gibes +gibing +gibingly +giddily +giddiness +giddy +gift +gifts +gig +giglets +giglot +gilbert +gild +gilded +gilding +gilliams +gillian +gills +gillyvors +gilt +gimmal +gimmers +gin +ging +ginger +gingerbread +gingerly +ginn +gins +gioucestershire +gipes +gipsies +gipsy +gird +girded +girdle +girdled +girdles +girdling +girl +girls +girt +girth +gis +giv +give +given +giver +givers +gives +givest +giveth +giving +givings +glad +gladded +gladding +gladly +gladness +glamis +glanc +glance +glanced +glances +glancing +glanders +glansdale +glare +glares +glass +glasses +glassy +glaz +glazed +gleams +glean +gleaned +gleaning +gleeful +gleek +gleeking +gleeks +glend +glendower +glib +glide +glided +glides +glideth +gliding +glimmer +glimmering +glimmers +glimpse +glimpses +glist +glistening +glister +glistering +glisters +glitt +glittering +globe +globes +glooming +gloomy +glories +glorified +glorify +glorious +gloriously +glory +glose +gloss +glosses +glou +glouceste +gloucester +gloucestershire +glove +glover +gloves +glow +glowed +glowing +glowworm +gloz +gloze +glozes +glu +glue +glued +glues +glut +glutt +glutted +glutton +gluttoning +gluttony +gnarled +gnarling +gnat +gnats +gnaw +gnawing +gnawn +gnaws +go +goad +goaded +goads +goal +goat +goatish +goats +gobbets +gobbo +goblet +goblets +goblin +goblins +god +godded +godden +goddess +goddesses +goddild +godfather +godfathers +godhead +godlike +godliness +godly +godmother +gods +godson +goer +goers +goes +goest +goeth +goffe +gogs +going +gold +golden +goldenly +goldsmith +goldsmiths +golgotha +goliases +goliath +gon +gondola +gondolier +gone +goneril +gong +gonzago +gonzalo +good +goodfellow +goodlier +goodliest +goodly +goodman +goodness +goodnight +goodrig +goods +goodwife +goodwill +goodwin +goodwins +goodyear +goodyears +goose +gooseberry +goosequills +goot +gor +gorbellied +gorboduc +gordian +gore +gored +gorg +gorge +gorgeous +gorget +gorging +gorgon +gormandize +gormandizing +gory +gosling +gospel +gospels +goss +gossamer +gossip +gossiping +gossiplike +gossips +got +goth +goths +gotten +gourd +gout +gouts +gouty +govern +governance +governed +governess +government +governor +governors +governs +gower +gown +gowns +grac +grace +graced +graceful +gracefully +graceless +graces +gracing +gracious +graciously +gradation +graff +graffing +graft +grafted +grafters +grain +grained +grains +gramercies +gramercy +grammar +grand +grandam +grandame +grandchild +grande +grandeur +grandfather +grandjurors +grandmother +grandpre +grandsir +grandsire +grandsires +grange +grant +granted +granting +grants +grape +grapes +grapple +grapples +grappling +grasp +grasped +grasps +grass +grasshoppers +grassy +grate +grated +grateful +grates +gratiano +gratify +gratii +gratillity +grating +gratis +gratitude +gratulate +grav +grave +gravediggers +gravel +graveless +gravell +gravely +graven +graveness +graver +graves +gravest +gravestone +gravities +gravity +gravy +gray +graymalkin +graz +graze +grazed +grazing +grease +greases +greasily +greasy +great +greater +greatest +greatly +greatness +grecian +grecians +gree +greece +greed +greedily +greediness +greedy +greeing +greek +greekish +greeks +green +greener +greenly +greens +greensleeves +greenwich +greenwood +greet +greeted +greeting +greetings +greets +greg +gregory +gremio +grew +grey +greybeard +greybeards +greyhound +greyhounds +grief +griefs +griev +grievance +grievances +grieve +grieved +grieves +grievest +grieving +grievingly +grievous +grievously +griffin +griffith +grim +grime +grimly +grin +grind +grinding +grindstone +grinning +grip +gripe +gripes +griping +grise +grisly +grissel +grize +grizzle +grizzled +groan +groaning +groans +groat +groats +groin +groom +grooms +grop +groping +gros +gross +grosser +grossly +grossness +ground +grounded +groundlings +grounds +grove +grovel +grovelling +groves +grow +groweth +growing +grown +grows +growth +grub +grubb +grubs +grudge +grudged +grudges +grudging +gruel +grumble +grumblest +grumbling +grumblings +grumio +grund +grunt +gualtier +guard +guardage +guardant +guarded +guardian +guardians +guards +guardsman +gud +gudgeon +guerdon +guerra +guess +guesses +guessingly +guest +guests +guiana +guichard +guide +guided +guider +guiderius +guides +guiding +guidon +guienne +guil +guildenstern +guilders +guildford +guildhall +guile +guiled +guileful +guilfords +guilt +guiltian +guiltier +guiltily +guiltiness +guiltless +guilts +guilty +guinea +guinever +guise +gul +gules +gulf +gulfs +gull +gulls +gum +gumm +gums +gun +gunner +gunpowder +guns +gurnet +gurney +gust +gusts +gusty +guts +gutter +guy +guynes +guysors +gypsy +gyve +gyved +gyves +h +ha +haberdasher +habiliment +habiliments +habit +habitation +habited +habits +habitude +hack +hacket +hackney +hacks +had +hadst +haec +haeres +hag +hagar +haggard +haggards +haggish +haggled +hags +hail +hailed +hailstone +hailstones +hair +hairless +hairs +hairy +hal +halberd +halberds +halcyon +hale +haled +hales +half +halfcan +halfpence +halfpenny +halfpennyworth +halfway +halidom +hall +halloa +halloing +hallond +halloo +hallooing +hallow +hallowed +hallowmas +hallown +hals +halt +halter +halters +halting +halts +halves +ham +hames +hamlet +hammer +hammered +hammering +hammers +hamper +hampton +hams +hamstring +hand +handed +handful +handicraft +handicraftsmen +handing +handiwork +handkercher +handkerchers +handkerchief +handle +handled +handles +handless +handlest +handling +handmaid +handmaids +hands +handsaw +handsome +handsomely +handsomeness +handwriting +handy +hang +hanged +hangers +hangeth +hanging +hangings +hangman +hangmen +hangs +hannibal +hap +hapless +haply +happ +happen +happened +happier +happies +happiest +happily +happiness +happy +haps +harbinger +harbingers +harbor +harbour +harbourage +harbouring +harbours +harcourt +hard +harder +hardest +hardiest +hardiment +hardiness +hardly +hardness +hardocks +hardy +hare +harelip +hares +harfleur +hark +harlot +harlotry +harlots +harm +harmed +harmful +harming +harmless +harmonious +harmony +harms +harness +harp +harper +harpier +harping +harpy +harried +harrow +harrows +harry +harsh +harshly +harshness +hart +harts +harum +harvest +has +hast +haste +hasted +hasten +hastes +hastily +hasting +hastings +hasty +hat +hatch +hatches +hatchet +hatching +hatchment +hate +hated +hateful +hater +haters +hates +hateth +hatfield +hath +hating +hatred +hats +haud +hauf +haught +haughtiness +haughty +haunch +haunches +haunt +haunted +haunting +haunts +hautboy +hautboys +have +haven +havens +haver +having +havings +havior +haviour +havoc +hawk +hawking +hawks +hawthorn +hawthorns +hay +hazard +hazarded +hazards +hazel +hazelnut +he +head +headborough +headed +headier +heading +headland +headless +headlong +heads +headsman +headstrong +heady +heal +healed +healing +heals +health +healthful +healths +healthsome +healthy +heap +heaping +heaps +hear +heard +hearer +hearers +hearest +heareth +hearing +hearings +heark +hearken +hearkens +hears +hearsay +hearse +hearsed +hearst +heart +heartache +heartbreak +heartbreaking +hearted +hearten +hearth +hearths +heartily +heartiness +heartless +heartlings +heartly +hearts +heartsick +heartstrings +hearty +heat +heated +heath +heathen +heathenish +heating +heats +heauties +heav +heave +heaved +heaven +heavenly +heavens +heaves +heavier +heaviest +heavily +heaviness +heaving +heavings +heavy +hebona +hebrew +hecate +hectic +hector +hectors +hecuba +hedg +hedge +hedgehog +hedgehogs +hedges +heed +heeded +heedful +heedfull +heedfully +heedless +heel +heels +hefted +hefts +heifer +heifers +heigh +height +heighten +heinous +heinously +heir +heiress +heirless +heirs +held +helen +helena +helenus +helias +helicons +hell +hellespont +hellfire +hellish +helm +helmed +helmet +helmets +helms +help +helper +helpers +helpful +helping +helpless +helps +helter +hem +heme +hemlock +hemm +hemp +hempen +hems +hen +hence +henceforth +henceforward +henchman +henri +henricus +henry +hens +hent +henton +her +herald +heraldry +heralds +herb +herbert +herblets +herbs +herculean +hercules +herd +herds +herdsman +herdsmen +here +hereabout +hereabouts +hereafter +hereby +hereditary +hereford +herefordshire +herein +hereof +heresies +heresy +heretic +heretics +hereto +hereupon +heritage +heritier +hermes +hermia +hermione +hermit +hermitage +hermits +herne +hero +herod +herods +heroes +heroic +heroical +herring +herrings +hers +herself +hesperides +hesperus +hest +hests +heure +heureux +hew +hewgh +hewing +hewn +hews +hey +heyday +hibocrates +hic +hiccups +hick +hid +hidden +hide +hideous +hideously +hideousness +hides +hidest +hiding +hie +hied +hiems +hies +hig +high +higher +highest +highly +highmost +highness +hight +highway +highways +hilding +hildings +hill +hillo +hilloa +hills +hilt +hilts +hily +him +himself +hinc +hinckley +hind +hinder +hindered +hinders +hindmost +hinds +hing +hinge +hinges +hint +hip +hipp +hipparchus +hippolyta +hips +hir +hire +hired +hiren +hirtius +his +hisperia +hiss +hisses +hissing +hist +historical +history +hit +hither +hitherto +hitherward +hitherwards +hits +hitting +hive +hives +hizzing +ho +hoa +hoar +hoard +hoarded +hoarding +hoars +hoarse +hoary +hob +hobbididence +hobby +hobbyhorse +hobgoblin +hobnails +hoc +hod +hodge +hog +hogs +hogshead +hogsheads +hois +hoise +hoist +hoisted +hoists +holborn +hold +holden +holder +holdeth +holdfast +holding +holds +hole +holes +holidam +holidame +holiday +holidays +holier +holiest +holily +holiness +holla +holland +hollander +hollanders +holloa +holloaing +hollow +hollowly +hollowness +holly +holmedon +holofernes +holp +holy +homage +homager +home +homely +homes +homespuns +homeward +homewards +homicide +homicides +homily +hominem +hommes +homo +honest +honester +honestest +honestly +honesty +honey +honeycomb +honeying +honeyless +honeysuckle +honeysuckles +honi +honneur +honor +honorable +honorably +honorato +honorificabilitudinitatibus +honors +honour +honourable +honourably +honoured +honourest +honourible +honouring +honours +hoo +hood +hooded +hoodman +hoods +hoodwink +hoof +hoofs +hook +hooking +hooks +hoop +hoops +hoot +hooted +hooting +hoots +hop +hope +hopeful +hopeless +hopes +hopest +hoping +hopkins +hoppedance +hor +horace +horatio +horizon +horn +hornbook +horned +horner +horning +hornpipes +horns +horologe +horrible +horribly +horrid +horrider +horridly +horror +horrors +hors +horse +horseback +horsed +horsehairs +horseman +horsemanship +horsemen +horses +horseway +horsing +hortensio +hortensius +horum +hose +hospitable +hospital +hospitality +host +hostage +hostages +hostess +hostile +hostility +hostilius +hosts +hot +hotly +hotspur +hotter +hottest +hound +hounds +hour +hourly +hours +hous +house +household +householder +householders +households +housekeeper +housekeepers +housekeeping +houseless +houses +housewife +housewifery +housewives +hovel +hover +hovered +hovering +hovers +how +howbeit +howe +howeer +however +howl +howled +howlet +howling +howls +howsoe +howsoever +howsome +hoxes +hoy +hoyday +hubert +huddled +huddling +hue +hued +hues +hug +huge +hugely +hugeness +hugg +hugger +hugh +hugs +hujus +hulk +hulks +hull +hulling +hullo +hum +human +humane +humanely +humanity +humble +humbled +humbleness +humbler +humbles +humblest +humbling +humbly +hume +humh +humidity +humility +humming +humor +humorous +humors +humour +humourists +humours +humphrey +humphry +hums +hundred +hundreds +hundredth +hung +hungarian +hungary +hunger +hungerford +hungerly +hungry +hunt +hunted +hunter +hunters +hunteth +hunting +huntington +huntress +hunts +huntsman +huntsmen +hurdle +hurl +hurling +hurls +hurly +hurlyburly +hurricano +hurricanoes +hurried +hurries +hurry +hurt +hurting +hurtled +hurtless +hurtling +hurts +husband +husbanded +husbandless +husbandry +husbands +hush +hushes +husht +husks +huswife +huswifes +hutch +hybla +hydra +hyen +hymen +hymenaeus +hymn +hymns +hyperboles +hyperbolical +hyperion +hypocrisy +hypocrite +hypocrites +hyrcan +hyrcania +hyrcanian +hyssop +hysterica +i +iachimo +iaculis +iago +iament +ibat +icarus +ice +iceland +ici +icicle +icicles +icy +idea +ideas +idem +iden +ides +idiot +idiots +idle +idleness +idles +idly +idol +idolatrous +idolatry +ield +if +ifs +ignis +ignoble +ignobly +ignominious +ignominy +ignomy +ignorance +ignorant +ii +iii +iiii +il +ilbow +ild +ilion +ilium +ill +illegitimate +illiterate +illness +illo +ills +illume +illumin +illuminate +illumineth +illusion +illusions +illustrate +illustrated +illustrious +illyria +illyrian +ils +im +image +imagery +images +imagin +imaginary +imagination +imaginations +imagine +imagining +imaginings +imbar +imbecility +imbrue +imitari +imitate +imitated +imitation +imitations +immaculate +immanity +immask +immaterial +immediacy +immediate +immediately +imminence +imminent +immoderate +immoderately +immodest +immoment +immortal +immortaliz +immortally +immur +immured +immures +imogen +imp +impaint +impair +impairing +impale +impaled +impanelled +impart +imparted +impartial +impartment +imparts +impasted +impatience +impatient +impatiently +impawn +impeach +impeached +impeachment +impeachments +impedes +impediment +impediments +impenetrable +imperator +imperceiverant +imperfect +imperfection +imperfections +imperfectly +imperial +imperious +imperiously +impertinency +impertinent +impeticos +impetuosity +impetuous +impieties +impiety +impious +implacable +implements +implies +implor +implorators +implore +implored +imploring +impon +import +importance +importancy +important +importantly +imported +importeth +importing +importless +imports +importun +importunacy +importunate +importune +importunes +importunity +impos +impose +imposed +imposition +impositions +impossibilities +impossibility +impossible +imposthume +impostor +impostors +impotence +impotent +impounded +impregnable +imprese +impress +impressed +impressest +impression +impressure +imprimendum +imprimis +imprint +imprinted +imprison +imprisoned +imprisoning +imprisonment +improbable +improper +improve +improvident +impudence +impudency +impudent +impudently +impudique +impugn +impugns +impure +imputation +impute +in +inaccessible +inaidable +inaudible +inauspicious +incaged +incantations +incapable +incardinate +incarnadine +incarnate +incarnation +incens +incense +incensed +incensement +incenses +incensing +incertain +incertainties +incertainty +incessant +incessantly +incest +incestuous +inch +incharitable +inches +incidency +incident +incision +incite +incites +incivil +incivility +inclin +inclinable +inclination +incline +inclined +inclines +inclining +inclips +include +included +includes +inclusive +incomparable +incomprehensible +inconsiderate +inconstancy +inconstant +incontinency +incontinent +incontinently +inconvenience +inconveniences +inconvenient +incony +incorporate +incorps +incorrect +increas +increase +increases +increaseth +increasing +incredible +incredulous +incur +incurable +incurr +incurred +incursions +ind +inde +indebted +indeed +indent +indented +indenture +indentures +index +indexes +india +indian +indict +indicted +indictment +indies +indifferency +indifferent +indifferently +indigent +indigest +indigested +indign +indignation +indignations +indigne +indignities +indignity +indirect +indirection +indirections +indirectly +indiscreet +indiscretion +indispos +indisposition +indissoluble +indistinct +indistinguish +indistinguishable +indited +individable +indrench +indu +indubitate +induc +induce +induced +inducement +induction +inductions +indue +indued +indues +indulgence +indulgences +indulgent +indurance +industrious +industriously +industry +inequality +inestimable +inevitable +inexecrable +inexorable +inexplicable +infallible +infallibly +infamonize +infamous +infamy +infancy +infant +infants +infect +infected +infecting +infection +infections +infectious +infectiously +infects +infer +inference +inferior +inferiors +infernal +inferr +inferreth +inferring +infest +infidel +infidels +infinite +infinitely +infinitive +infirm +infirmities +infirmity +infixed +infixing +inflam +inflame +inflaming +inflammation +inflict +infliction +influence +influences +infold +inform +informal +information +informations +informed +informer +informs +infortunate +infring +infringe +infringed +infus +infuse +infused +infusing +infusion +ingener +ingenious +ingeniously +inglorious +ingots +ingraffed +ingraft +ingrate +ingrated +ingrateful +ingratitude +ingratitudes +ingredient +ingredients +ingross +inhabit +inhabitable +inhabitants +inhabited +inhabits +inhearse +inhearsed +inherent +inherit +inheritance +inherited +inheriting +inheritor +inheritors +inheritrix +inherits +inhibited +inhibition +inhoop +inhuman +iniquities +iniquity +initiate +injointed +injunction +injunctions +injur +injure +injurer +injuries +injurious +injury +injustice +ink +inkhorn +inkle +inkles +inkling +inky +inlaid +inland +inlay +inly +inmost +inn +inner +innkeeper +innocence +innocency +innocent +innocents +innovation +innovator +inns +innumerable +inoculate +inordinate +inprimis +inquir +inquire +inquiry +inquisition +inquisitive +inroads +insane +insanie +insatiate +insconce +inscrib +inscription +inscriptions +inscroll +inscrutable +insculp +insculpture +insensible +inseparable +inseparate +insert +inserted +inset +inshell +inshipp +inside +insinewed +insinuate +insinuateth +insinuating +insinuation +insisted +insisting +insisture +insociable +insolence +insolent +insomuch +inspir +inspiration +inspirations +inspire +inspired +install +installed +instalment +instance +instances +instant +instantly +instate +instead +insteeped +instigate +instigated +instigation +instigations +instigator +instinct +instinctively +institute +institutions +instruct +instructed +instruction +instructions +instructs +instrument +instrumental +instruments +insubstantial +insufficience +insufficiency +insult +insulted +insulting +insultment +insults +insupportable +insuppressive +insurrection +insurrections +int +integer +integritas +integrity +intellect +intellects +intellectual +intelligence +intelligencer +intelligencing +intelligent +intelligis +intelligo +intemperance +intemperate +intend +intended +intendeth +intending +intendment +intends +intenible +intent +intention +intentively +intents +inter +intercept +intercepted +intercepter +interception +intercepts +intercession +intercessors +interchained +interchang +interchange +interchangeably +interchangement +interchanging +interdiction +interest +interim +interims +interior +interjections +interjoin +interlude +intermingle +intermission +intermissive +intermit +intermix +intermixed +interpose +interposer +interposes +interpret +interpretation +interpreted +interpreter +interpreters +interprets +interr +interred +interrogatories +interrupt +interrupted +interrupter +interruptest +interruption +interrupts +intertissued +intervallums +interview +intestate +intestine +intil +intimate +intimation +intitled +intituled +into +intolerable +intoxicates +intreasured +intreat +intrench +intrenchant +intricate +intrinse +intrinsicate +intrude +intruder +intruding +intrusion +inundation +inure +inurn +invade +invades +invasion +invasive +invectively +invectives +inveigled +invent +invented +invention +inventions +inventor +inventorially +inventoried +inventors +inventory +inverness +invert +invest +invested +investing +investments +inveterate +invincible +inviolable +invised +invisible +invitation +invite +invited +invites +inviting +invitis +invocate +invocation +invoke +invoked +invulnerable +inward +inwardly +inwardness +inwards +ionia +ionian +ipse +ipswich +ira +irae +iras +ire +ireful +ireland +iris +irish +irishman +irishmen +irks +irksome +iron +irons +irreconcil +irrecoverable +irregular +irregulous +irreligious +irremovable +irreparable +irresolute +irrevocable +is +isabel +isabella +isbel +isbels +iscariot +ise +ish +isidore +isis +island +islander +islanders +islands +isle +isles +israel +issu +issue +issued +issueless +issues +issuing +ist +ista +it +italian +italy +itch +itches +itching +item +items +iteration +ithaca +its +itself +itshall +iv +ivory +ivy +iwis +ix +j +jacet +jack +jackanapes +jacks +jacksauce +jackslave +jacob +jade +jaded +jades +jail +jakes +jamany +james +jamy +jane +jangled +jangling +january +janus +japhet +jaquenetta +jaques +jar +jarring +jars +jarteer +jasons +jaunce +jauncing +jaundice +jaundies +jaw +jawbone +jaws +jay +jays +jc +je +jealous +jealousies +jealousy +jeer +jeering +jelly +jenny +jeopardy +jephtha +jephthah +jerkin +jerkins +jerks +jeronimy +jerusalem +jeshu +jesses +jessica +jest +jested +jester +jesters +jesting +jests +jesu +jesus +jet +jets +jew +jewel +jeweller +jewels +jewess +jewish +jewry +jews +jezebel +jig +jigging +jill +jills +jingling +joan +job +jockey +jocund +jog +jogging +john +johns +join +joinder +joined +joiner +joineth +joins +joint +jointed +jointing +jointly +jointress +joints +jointure +jollity +jolly +jolt +joltheads +jordan +joseph +joshua +jot +jour +jourdain +journal +journey +journeying +journeyman +journeymen +journeys +jove +jovem +jovial +jowl +jowls +joy +joyed +joyful +joyfully +joyless +joyous +joys +juan +jud +judas +judases +jude +judg +judge +judged +judgement +judges +judgest +judging +judgment +judgments +judicious +jug +juggle +juggled +juggler +jugglers +juggling +jugs +juice +juiced +jul +jule +julia +juliet +julietta +julio +julius +july +jump +jumpeth +jumping +jumps +june +junes +junior +junius +junkets +juno +jupiter +jure +jurement +jurisdiction +juror +jurors +jury +jurymen +just +justeius +justest +justice +justicer +justicers +justices +justification +justified +justify +justle +justled +justles +justling +justly +justness +justs +jutting +jutty +juvenal +kam +kate +kated +kates +katharine +katherina +katherine +kecksies +keech +keel +keels +keen +keenness +keep +keepdown +keeper +keepers +keepest +keeping +keeps +keiser +ken +kendal +kennel +kent +kentish +kentishman +kentishmen +kept +kerchief +kerely +kern +kernal +kernel +kernels +kerns +kersey +kettle +kettledrum +kettledrums +key +keys +kibe +kibes +kick +kicked +kickshaws +kickshawses +kicky +kid +kidney +kikely +kildare +kill +killed +killer +killeth +killing +killingworth +kills +kiln +kimbolton +kin +kind +kinder +kindest +kindle +kindled +kindless +kindlier +kindling +kindly +kindness +kindnesses +kindred +kindreds +kinds +kine +king +kingdom +kingdoms +kingly +kings +kinred +kins +kinsman +kinsmen +kinswoman +kirtle +kirtles +kiss +kissed +kisses +kissing +kitchen +kitchens +kite +kites +kitten +kj +kl +klll +knack +knacks +knapp +knav +knave +knaveries +knavery +knaves +knavish +knead +kneaded +kneading +knee +kneel +kneeling +kneels +knees +knell +knew +knewest +knife +knight +knighted +knighthood +knighthoods +knightly +knights +knit +knits +knitters +knitteth +knives +knobs +knock +knocking +knocks +knog +knoll +knot +knots +knotted +knotty +know +knower +knowest +knowing +knowingly +knowings +knowledge +known +knows +l +la +laban +label +labell +labienus +labio +labor +laboring +labors +labour +laboured +labourer +labourers +labouring +labours +laboursome +labras +labyrinth +lac +lace +laced +lacedaemon +laces +lacies +lack +lackbeard +lacked +lackey +lackeying +lackeys +lacking +lacks +lad +ladder +ladders +lade +laden +ladies +lading +lads +lady +ladybird +ladyship +ladyships +laer +laertes +lafeu +lag +lagging +laid +lain +laissez +lake +lakes +lakin +lam +lamb +lambert +lambkin +lambkins +lambs +lame +lamely +lameness +lament +lamentable +lamentably +lamentation +lamentations +lamented +lamenting +lamentings +laments +lames +laming +lammas +lammastide +lamound +lamp +lampass +lamps +lanc +lancaster +lance +lances +lanceth +lanch +land +landed +landing +landless +landlord +landmen +lands +lane +lanes +langage +langley +langton +language +languageless +languages +langues +languish +languished +languishes +languishing +languishings +languishment +languor +lank +lantern +lanterns +lanthorn +lap +lapis +lapland +lapp +laps +lapse +lapsed +lapsing +lapwing +laquais +larded +larder +larding +lards +large +largely +largeness +larger +largess +largest +lark +larks +larron +lartius +larum +larums +las +lascivious +lash +lass +lasses +last +lasted +lasting +lastly +lasts +latch +latches +late +lated +lately +later +latest +lath +latin +latten +latter +lattice +laud +laudable +laudis +laugh +laughable +laughed +laugher +laughest +laughing +laughs +laughter +launce +launcelot +launces +launch +laund +laundress +laundry +laur +laura +laurel +laurels +laurence +laus +lavache +lave +lavee +lavender +lavina +lavinia +lavish +lavishly +lavolt +lavoltas +law +lawful +lawfully +lawless +lawlessly +lawn +lawns +lawrence +laws +lawyer +lawyers +lay +layer +layest +laying +lays +lazar +lazars +lazarus +lazy +lc +ld +ldst +le +lead +leaden +leader +leaders +leadest +leading +leads +leaf +leagu +league +leagued +leaguer +leagues +leah +leak +leaky +lean +leander +leaner +leaning +leanness +leans +leap +leaped +leaping +leaps +leapt +lear +learn +learned +learnedly +learning +learnings +learns +learnt +leas +lease +leases +leash +leasing +least +leather +leathern +leav +leave +leaven +leavening +leaver +leaves +leaving +leavy +lecher +lecherous +lechers +lechery +lecon +lecture +lectures +led +leda +leech +leeches +leek +leeks +leer +leers +lees +leese +leet +leets +left +leg +legacies +legacy +legate +legatine +lege +legerity +leges +legg +legion +legions +legitimate +legitimation +legs +leicester +leicestershire +leiger +leigers +leisure +leisurely +leisures +leman +lemon +lena +lend +lender +lending +lendings +lends +length +lengthen +lengthens +lengths +lenity +lennox +lent +lenten +lentus +leo +leon +leonardo +leonati +leonato +leonatus +leontes +leopard +leopards +leper +leperous +lepidus +leprosy +lequel +lers +les +less +lessen +lessens +lesser +lesson +lessoned +lessons +lest +lestrake +let +lethargied +lethargies +lethargy +lethe +lets +lett +letter +letters +letting +lettuce +leur +leve +level +levell +levelled +levels +leven +levers +leviathan +leviathans +levied +levies +levity +levy +levying +lewd +lewdly +lewdness +lewdsters +lewis +liable +liar +liars +libbard +libelling +libels +liberal +liberality +liberte +liberties +libertine +libertines +liberty +library +libya +licence +licens +license +licentious +lichas +licio +lick +licked +licker +lictors +lid +lids +lie +lied +lief +liefest +liege +liegeman +liegemen +lien +lies +liest +lieth +lieu +lieutenant +lieutenantry +lieutenants +lieve +life +lifeblood +lifeless +lifelings +lift +lifted +lifter +lifteth +lifting +lifts +lig +ligarius +liggens +light +lighted +lighten +lightens +lighter +lightest +lightly +lightness +lightning +lightnings +lights +lik +like +liked +likeliest +likelihood +likelihoods +likely +likeness +liker +likes +likest +likewise +liking +likings +lilies +lily +lim +limander +limb +limbeck +limbecks +limber +limbo +limbs +lime +limed +limehouse +limekilns +limit +limitation +limited +limits +limn +limp +limping +limps +lin +lincoln +lincolnshire +line +lineal +lineally +lineament +lineaments +lined +linen +linens +lines +ling +lingare +linger +lingered +lingers +linguist +lining +link +links +linsey +linstock +linta +lion +lionel +lioness +lions +lip +lipp +lips +lipsbury +liquid +liquor +liquorish +liquors +lirra +lisbon +lisp +lisping +list +listen +listening +lists +literatured +lither +litter +little +littlest +liv +live +lived +livelier +livelihood +livelong +lively +liver +liveries +livers +livery +lives +livest +liveth +livia +living +livings +lizard +lizards +ll +lll +llous +lnd +lo +loa +loach +load +loaden +loading +loads +loaf +loam +loan +loath +loathe +loathed +loather +loathes +loathing +loathly +loathness +loathsome +loathsomeness +loathsomest +loaves +lob +lobbies +lobby +local +lochaber +lock +locked +locking +lockram +locks +locusts +lode +lodg +lodge +lodged +lodgers +lodges +lodging +lodgings +lodovico +lodowick +lofty +log +logger +loggerhead +loggerheads +loggets +logic +logs +loins +loiter +loiterer +loiterers +loitering +lolling +lolls +lombardy +london +londoners +lone +loneliness +lonely +long +longaville +longboat +longed +longer +longest +longeth +longing +longings +longly +longs +longtail +loo +loof +look +looked +looker +lookers +lookest +looking +looks +loon +loop +loos +loose +loosed +loosely +loosen +loosing +lop +lopp +loquitur +lord +lorded +lording +lordings +lordliness +lordly +lords +lordship +lordships +lorenzo +lorn +lorraine +lorship +los +lose +loser +losers +loses +losest +loseth +losing +loss +losses +lost +lot +lots +lott +lottery +loud +louder +loudly +lour +loureth +louring +louse +louses +lousy +lout +louted +louts +louvre +lov +love +loved +lovedst +lovel +lovelier +loveliness +lovell +lovely +lover +lovered +lovers +loves +lovest +loveth +loving +lovingly +low +lowe +lower +lowest +lowing +lowliness +lowly +lown +lowness +loyal +loyally +loyalties +loyalty +lozel +lt +lubber +lubberly +luc +luccicos +luce +lucentio +luces +lucetta +luciana +lucianus +lucifer +lucifier +lucilius +lucina +lucio +lucius +luck +luckier +luckiest +luckily +luckless +lucky +lucre +lucrece +lucretia +lucullius +lucullus +lucy +lud +ludlow +lug +lugg +luggage +luke +lukewarm +lull +lulla +lullaby +lulls +lumbert +lump +lumpish +luna +lunacies +lunacy +lunatic +lunatics +lunes +lungs +lupercal +lurch +lure +lurk +lurketh +lurking +lurks +luscious +lush +lust +lusted +luster +lustful +lustier +lustiest +lustig +lustihood +lustily +lustre +lustrous +lusts +lusty +lute +lutes +lutestring +lutheran +luxurious +luxuriously +luxury +ly +lycaonia +lycurguses +lydia +lye +lyen +lying +lym +lymoges +lynn +lysander +m +ma +maan +mab +macbeth +maccabaeus +macdonwald +macduff +mace +macedon +maces +machiavel +machination +machinations +machine +mack +macmorris +maculate +maculation +mad +madam +madame +madams +madcap +madded +madding +made +madeira +madly +madman +madmen +madness +madonna +madrigals +mads +maecenas +maggot +maggots +magic +magical +magician +magistrate +magistrates +magnanimity +magnanimous +magni +magnifi +magnificence +magnificent +magnifico +magnificoes +magnus +mahomet +mahu +maid +maiden +maidenhead +maidenheads +maidenhood +maidenhoods +maidenliest +maidenly +maidens +maidhood +maids +mail +mailed +mails +maim +maimed +maims +main +maincourse +maine +mainly +mainmast +mains +maintain +maintained +maintains +maintenance +mais +maison +majestas +majestee +majestic +majestical +majestically +majesties +majesty +major +majority +mak +make +makeless +maker +makers +makes +makest +maketh +making +makings +mal +mala +maladies +malady +malapert +malcolm +malcontent +malcontents +male +maledictions +malefactions +malefactor +malefactors +males +malevolence +malevolent +malhecho +malice +malicious +maliciously +malign +malignancy +malignant +malignantly +malkin +mall +mallard +mallet +mallows +malmsey +malt +maltworms +malvolio +mamillius +mammering +mammet +mammets +mammock +man +manacle +manacles +manage +managed +manager +managing +manakin +manchus +mandate +mandragora +mandrake +mandrakes +mane +manent +manes +manet +manfully +mangle +mangled +mangles +mangling +mangy +manhood +manhoods +manifest +manifested +manifests +manifold +manifoldly +manka +mankind +manlike +manly +mann +manna +manner +mannerly +manners +manningtree +mannish +manor +manors +mans +mansion +mansionry +mansions +manslaughter +mantle +mantled +mantles +mantua +mantuan +manual +manure +manured +manus +many +map +mapp +maps +mar +marble +marbled +marcade +marcellus +march +marches +marcheth +marching +marchioness +marchpane +marcians +marcius +marcus +mardian +mare +mares +marg +margarelon +margaret +marge +margent +margery +maria +marian +mariana +maries +marigold +mariner +mariners +maritime +marjoram +mark +marked +market +marketable +marketplace +markets +marking +markman +marks +marl +marle +marmoset +marquess +marquis +marr +marriage +marriages +married +marries +marring +marrow +marrowless +marrows +marry +marrying +mars +marseilles +marsh +marshal +marshalsea +marshalship +mart +marted +martem +martext +martial +martin +martino +martius +martlemas +martlet +marts +martyr +martyrs +marullus +marv +marvel +marvell +marvellous +marvellously +marvels +mary +mas +masculine +masham +mask +masked +masker +maskers +masking +masks +mason +masonry +masons +masque +masquers +masques +masquing +mass +massacre +massacres +masses +massy +mast +mastcr +master +masterdom +masterest +masterless +masterly +masterpiece +masters +mastership +mastic +mastiff +mastiffs +masts +match +matches +matcheth +matching +matchless +mate +mated +mater +material +mates +mathematics +matin +matron +matrons +matter +matters +matthew +mattock +mattress +mature +maturity +maud +maudlin +maugre +maul +maund +mauri +mauritania +mauvais +maw +maws +maxim +may +mayday +mayest +mayor +maypole +mayst +maz +maze +mazed +mazes +mazzard +me +meacock +mead +meadow +meadows +meads +meagre +meal +meals +mealy +mean +meanders +meaner +meanest +meaneth +meaning +meanings +meanly +means +meant +meantime +meanwhile +measles +measur +measurable +measure +measured +measureless +measures +measuring +meat +meats +mechanic +mechanical +mechanicals +mechanics +mechante +med +medal +meddle +meddler +meddling +mede +medea +media +mediation +mediators +medice +medicinal +medicine +medicines +meditate +meditates +meditating +meditation +meditations +mediterranean +mediterraneum +medlar +medlars +meed +meeds +meek +meekly +meekness +meet +meeter +meetest +meeting +meetings +meetly +meetness +meets +meg +mehercle +meilleur +meiny +meisen +melancholies +melancholy +melford +mell +mellifluous +mellow +mellowing +melodious +melody +melt +melted +melteth +melting +melts +melun +member +members +memento +memorable +memorandums +memorial +memorials +memories +memoriz +memorize +memory +memphis +men +menac +menace +menaces +menaphon +menas +mend +mended +mender +mending +mends +menecrates +menelaus +menenius +mental +menteith +mention +mentis +menton +mephostophilus +mer +mercatante +mercatio +mercenaries +mercenary +mercer +merchandise +merchandized +merchant +merchants +mercies +merciful +mercifully +merciless +mercurial +mercuries +mercury +mercutio +mercy +mere +mered +merely +merest +meridian +merit +merited +meritorious +merits +merlin +mermaid +mermaids +merops +merrier +merriest +merrily +merriman +merriment +merriments +merriness +merry +mervailous +mes +mesh +meshes +mesopotamia +mess +message +messages +messala +messaline +messenger +messengers +messes +messina +met +metal +metals +metamorphis +metamorphoses +metaphor +metaphysical +metaphysics +mete +metellus +meteor +meteors +meteyard +metheglin +metheglins +methink +methinks +method +methods +methought +methoughts +metre +metres +metropolis +mette +mettle +mettled +meus +mew +mewed +mewling +mexico +mi +mice +michael +michaelmas +micher +miching +mickle +microcosm +mid +midas +middest +middle +middleham +midnight +midriff +midst +midsummer +midway +midwife +midwives +mienne +might +mightful +mightier +mightiest +mightily +mightiness +mightst +mighty +milan +milch +mild +milder +mildest +mildew +mildews +mildly +mildness +mile +miles +milford +militarist +military +milk +milking +milkmaid +milks +milksops +milky +mill +mille +miller +milliner +million +millioned +millions +mills +millstones +milo +mimic +minc +mince +minces +mincing +mind +minded +minding +mindless +minds +mine +mineral +minerals +minerva +mines +mingle +mingled +mingling +minikin +minim +minime +minimo +minimus +mining +minion +minions +minist +minister +ministers +ministration +minnow +minnows +minola +minority +minos +minotaurs +minstrel +minstrels +minstrelsy +mint +mints +minute +minutely +minutes +minx +mio +mir +mirable +miracle +miracles +miraculous +miranda +mire +mirror +mirrors +mirth +mirthful +miry +mis +misadventur +misadventure +misanthropos +misapplied +misbecame +misbecom +misbecome +misbegot +misbegotten +misbeliever +misbelieving +misbhav +miscall +miscalled +miscarried +miscarries +miscarry +miscarrying +mischance +mischances +mischief +mischiefs +mischievous +misconceived +misconst +misconster +misconstruction +misconstrued +misconstrues +miscreant +miscreate +misdeed +misdeeds +misdemean +misdemeanours +misdoubt +misdoubteth +misdoubts +misenum +miser +miserable +miserably +misericorde +miseries +misers +misery +misfortune +misfortunes +misgive +misgives +misgiving +misgoverned +misgovernment +misgraffed +misguide +mishap +mishaps +misheard +misinterpret +mislead +misleader +misleaders +misleading +misled +mislike +misord +misplac +misplaced +misplaces +mispris +misprised +misprision +misprizing +misproud +misquote +misreport +miss +missed +misses +misshap +misshapen +missheathed +missing +missingly +missions +missive +missives +misspoke +mist +mista +mistak +mistake +mistaken +mistakes +mistaketh +mistaking +mistakings +mistemp +mistempered +misterm +mistful +misthink +misthought +mistletoe +mistook +mistreadings +mistress +mistresses +mistresss +mistriship +mistrust +mistrusted +mistrustful +mistrusting +mists +misty +misus +misuse +misused +misuses +mites +mithridates +mitigate +mitigation +mix +mixed +mixture +mixtures +mm +mnd +moan +moans +moat +moated +mobled +mock +mockable +mocker +mockeries +mockers +mockery +mocking +mocks +mockvater +mockwater +model +modena +moderate +moderately +moderation +modern +modest +modesties +modestly +modesty +modicums +modo +module +moe +moi +moiety +moist +moisten +moisture +moldwarp +mole +molehill +moles +molest +molestation +mollification +mollis +molten +molto +mome +moment +momentary +moming +mon +monachum +monarch +monarchies +monarchize +monarcho +monarchs +monarchy +monast +monastery +monastic +monday +monde +money +moneys +mong +monger +mongers +monging +mongrel +mongrels +mongst +monk +monkey +monkeys +monks +monmouth +monopoly +mons +monsieur +monsieurs +monster +monsters +monstrous +monstrously +monstrousness +monstruosity +montacute +montage +montague +montagues +montano +montant +montez +montferrat +montgomery +month +monthly +months +montjoy +monument +monumental +monuments +mood +moods +moody +moon +moonbeams +moonish +moonlight +moons +moonshine +moonshines +moor +moorfields +moors +moorship +mop +mope +moping +mopping +mopsa +moral +moraler +morality +moralize +mordake +more +moreover +mores +morgan +mori +morisco +morn +morning +mornings +morocco +morris +morrow +morrows +morsel +morsels +mort +mortal +mortality +mortally +mortals +mortar +mortgaged +mortified +mortifying +mortimer +mortimers +mortis +mortise +morton +mose +moss +mossgrown +most +mote +moth +mother +mothers +moths +motion +motionless +motions +motive +motives +motley +mots +mought +mould +moulded +mouldeth +moulds +mouldy +moult +moulten +mounch +mounseur +mounsieur +mount +mountain +mountaineer +mountaineers +mountainous +mountains +mountant +mountanto +mountebank +mountebanks +mounted +mounteth +mounting +mounts +mourn +mourned +mourner +mourners +mournful +mournfully +mourning +mourningly +mournings +mourns +mous +mouse +mousetrap +mousing +mouth +mouthed +mouths +mov +movables +move +moveable +moveables +moved +mover +movers +moves +moveth +moving +movingly +movousus +mow +mowbray +mower +mowing +mows +moy +moys +moyses +mrs +much +muck +mud +mudded +muddied +muddy +muffins +muffl +muffle +muffled +muffler +muffling +mugger +mugs +mulberries +mulberry +mule +mules +muleteers +mulier +mulieres +muliteus +mull +mulmutius +multiplied +multiply +multiplying +multipotent +multitude +multitudes +multitudinous +mum +mumble +mumbling +mummers +mummy +mun +munch +muniments +munition +murd +murder +murdered +murderer +murderers +murdering +murderous +murders +mure +murk +murkiest +murky +murmur +murmurers +murmuring +murrain +murray +murrion +murther +murtherer +murtherers +murthering +murtherous +murthers +mus +muscadel +muscovites +muscovits +muscovy +muse +muses +mush +mushrooms +music +musical +musician +musicians +musics +musing +musings +musk +musket +muskets +muskos +muss +mussel +mussels +must +mustachio +mustard +mustardseed +muster +mustering +musters +musty +mutability +mutable +mutation +mutations +mute +mutes +mutest +mutine +mutineer +mutineers +mutines +mutinies +mutinous +mutiny +mutius +mutter +muttered +mutton +muttons +mutual +mutualities +mutually +muzzl +muzzle +muzzled +mv +mww +my +mynheers +myrmidon +myrmidons +myrtle +myself +myst +mysteries +mystery +n +nag +nage +nags +naiads +nail +nails +nak +naked +nakedness +nal +nam +name +named +nameless +namely +names +namest +naming +nan +nance +nap +nape +napes +napkin +napkins +naples +napless +napping +naps +narbon +narcissus +narines +narrow +narrowly +naso +nasty +nathaniel +natifs +nation +nations +native +nativity +natur +natural +naturalize +naturally +nature +natured +natures +natus +naught +naughtily +naughty +navarre +nave +navel +navigation +navy +nay +nayward +nayword +nazarite +ne +neaf +neamnoins +neanmoins +neapolitan +neapolitans +near +nearer +nearest +nearly +nearness +neat +neatly +neb +nebour +nebuchadnezzar +nec +necessaries +necessarily +necessary +necessitied +necessities +necessity +neck +necklace +necks +nectar +ned +nedar +need +needed +needer +needful +needfull +needing +needle +needles +needless +needly +needs +needy +neer +neeze +nefas +negation +negative +negatives +neglect +neglected +neglecting +neglectingly +neglection +negligence +negligent +negotiate +negotiations +negro +neigh +neighbors +neighbour +neighbourhood +neighbouring +neighbourly +neighbours +neighing +neighs +neither +nell +nemean +nemesis +neoptolemus +nephew +nephews +neptune +ner +nereides +nerissa +nero +neroes +ners +nerve +nerves +nervii +nervy +nessus +nest +nestor +nests +net +nether +netherlands +nets +nettle +nettled +nettles +neuter +neutral +nev +never +nevil +nevils +new +newborn +newer +newest +newgate +newly +newness +news +newsmongers +newt +newts +next +nibbling +nicanor +nice +nicely +niceness +nicer +nicety +nicholas +nick +nickname +nicks +niece +nieces +niggard +niggarding +niggardly +nigh +night +nightcap +nightcaps +nighted +nightgown +nightingale +nightingales +nightly +nightmare +nights +nightwork +nihil +nile +nill +nilus +nimble +nimbleness +nimbler +nimbly +nine +nineteen +ning +ningly +ninny +ninth +ninus +niobe +niobes +nip +nipp +nipping +nipple +nips +nit +nly +nnight +nnights +no +noah +nob +nobility +nobis +noble +nobleman +noblemen +nobleness +nobler +nobles +noblesse +noblest +nobly +nobody +noces +nod +nodded +nodding +noddle +noddles +noddy +nods +noes +nointed +nois +noise +noiseless +noisemaker +noises +noisome +nole +nominate +nominated +nomination +nominativo +non +nonage +nonce +none +nonino +nonny +nonpareil +nonsuits +nony +nook +nooks +noon +noonday +noontide +nor +norbery +norfolk +norman +normandy +normans +north +northampton +northamptonshire +northerly +northern +northgate +northumberland +northumberlands +northward +norway +norways +norwegian +norweyan +nos +nose +nosegays +noseless +noses +noster +nostra +nostril +nostrils +not +notable +notably +notary +notch +note +notebook +noted +notedly +notes +notest +noteworthy +nothing +nothings +notice +notify +noting +notion +notorious +notoriously +notre +notwithstanding +nought +noun +nouns +nourish +nourished +nourisher +nourishes +nourisheth +nourishing +nourishment +nous +novel +novelties +novelty +noverbs +novi +novice +novices +novum +now +nowhere +noyance +ns +nt +nubibus +numa +numb +number +numbered +numbering +numberless +numbers +numbness +nun +nuncio +nuncle +nunnery +nuns +nuntius +nuptial +nurs +nurse +nursed +nurser +nursery +nurses +nurseth +nursh +nursing +nurtur +nurture +nut +nuthook +nutmeg +nutmegs +nutriment +nuts +nutshell +ny +nym +nymph +nymphs +o +oak +oaken +oaks +oared +oars +oatcake +oaten +oath +oathable +oaths +oats +ob +obduracy +obdurate +obedience +obedient +obeisance +oberon +obey +obeyed +obeying +obeys +obidicut +object +objected +objections +objects +oblation +oblations +obligation +obligations +obliged +oblique +oblivion +oblivious +obloquy +obscene +obscenely +obscur +obscure +obscured +obscurely +obscures +obscuring +obscurity +obsequies +obsequious +obsequiously +observ +observance +observances +observancy +observant +observants +observation +observe +observed +observer +observers +observing +observingly +obsque +obstacle +obstacles +obstinacy +obstinate +obstinately +obstruct +obstruction +obstructions +obtain +obtained +obtaining +occasion +occasions +occident +occidental +occulted +occupat +occupation +occupations +occupied +occupies +occupy +occurrence +occurrences +occurrents +ocean +oceans +octavia +octavius +ocular +od +odd +oddest +oddly +odds +ode +odes +odious +odoriferous +odorous +odour +odours +ods +oeillades +oes +oeuvres +of +ofephesus +off +offal +offence +offenceful +offences +offend +offended +offendendo +offender +offenders +offendeth +offending +offendress +offends +offense +offenseless +offenses +offensive +offer +offered +offering +offerings +offers +offert +offic +office +officed +officer +officers +offices +official +officious +offspring +oft +often +oftener +oftentimes +oh +oil +oils +oily +old +oldcastle +olden +older +oldest +oldness +olive +oliver +olivers +olives +olivia +olympian +olympus +oman +omans +omen +ominous +omission +omit +omittance +omitted +omitting +omne +omnes +omnipotent +on +once +one +ones +oneyers +ongles +onion +onions +only +onset +onward +onwards +oo +ooze +oozes +oozy +op +opal +ope +open +opener +opening +openly +openness +opens +operant +operate +operation +operations +operative +opes +oph +ophelia +opinion +opinions +opportune +opportunities +opportunity +oppos +oppose +opposed +opposeless +opposer +opposers +opposes +opposing +opposite +opposites +opposition +oppositions +oppress +oppressed +oppresses +oppresseth +oppressing +oppression +oppressor +opprest +opprobriously +oppugnancy +opulency +opulent +or +oracle +oracles +orange +oration +orator +orators +oratory +orb +orbed +orbs +orchard +orchards +ord +ordain +ordained +ordaining +order +ordered +ordering +orderless +orderly +orders +ordinance +ordinant +ordinaries +ordinary +ordnance +ords +ordure +ore +organ +organs +orgillous +orient +orifex +origin +original +orisons +ork +orlando +orld +orleans +ornament +ornaments +orodes +orphan +orphans +orpheus +orsino +ort +orthography +orts +oscorbidulchos +osier +osiers +osprey +osr +osric +ossa +ost +ostent +ostentare +ostentation +ostents +ostler +ostlers +ostrich +osw +oswald +othello +other +othergates +others +otherwhere +otherwhiles +otherwise +otter +ottoman +ottomites +oublie +ouches +ought +oui +ounce +ounces +ouphes +our +ours +ourself +ourselves +ousel +out +outbids +outbrave +outbraves +outbreak +outcast +outcries +outcry +outdar +outdare +outdares +outdone +outfac +outface +outfaced +outfacing +outfly +outfrown +outgo +outgoes +outgrown +outjest +outlaw +outlawry +outlaws +outliv +outlive +outlives +outliving +outlook +outlustres +outpriz +outrage +outrageous +outrages +outran +outright +outroar +outrun +outrunning +outruns +outscold +outscorn +outsell +outsells +outside +outsides +outspeaks +outsport +outstare +outstay +outstood +outstretch +outstretched +outstrike +outstrip +outstripped +outswear +outvenoms +outward +outwardly +outwards +outwear +outweighs +outwent +outworn +outworths +oven +over +overawe +overbear +overblown +overboard +overbold +overborne +overbulk +overbuys +overcame +overcast +overcharg +overcharged +overcome +overcomes +overdone +overearnest +overfar +overflow +overflown +overglance +overgo +overgone +overgorg +overgrown +overhead +overhear +overheard +overhold +overjoyed +overkind +overland +overleather +overlive +overlook +overlooking +overlooks +overmaster +overmounting +overmuch +overpass +overpeer +overpeering +overplus +overrul +overrun +overscutch +overset +overshades +overshine +overshines +overshot +oversights +overspread +overstain +overswear +overt +overta +overtake +overtaketh +overthrow +overthrown +overthrows +overtook +overtopp +overture +overturn +overwatch +overween +overweening +overweigh +overwhelm +overwhelming +overworn +ovid +ovidius +ow +owe +owed +owedst +owen +owes +owest +oweth +owing +owl +owls +own +owner +owners +owning +owns +owy +ox +oxen +oxford +oxfordshire +oxlips +oyes +oyster +p +pabble +pabylon +pac +pace +paced +paces +pacified +pacify +pacing +pack +packet +packets +packhorses +packing +packings +packs +packthread +pacorus +paction +pad +paddle +paddling +paddock +padua +pagan +pagans +page +pageant +pageants +pages +pah +paid +pail +pailfuls +pails +pain +pained +painful +painfully +pains +paint +painted +painter +painting +paintings +paints +pair +paired +pairs +pajock +pal +palabras +palace +palaces +palamedes +palate +palates +palatine +palating +pale +paled +paleness +paler +pales +palestine +palfrey +palfreys +palisadoes +pall +pallabris +pallas +pallets +palm +palmer +palmers +palms +palmy +palpable +palsied +palsies +palsy +palt +palter +paltry +paly +pamp +pamper +pamphlets +pan +pancackes +pancake +pancakes +pandar +pandars +pandarus +pander +panderly +panders +pandulph +panel +pang +panging +pangs +pannier +pannonians +pansa +pansies +pant +pantaloon +panted +pantheon +panther +panthino +panting +pantingly +pantler +pantry +pants +pap +papal +paper +papers +paphlagonia +paphos +papist +paps +par +parable +paracelsus +paradise +paradox +paradoxes +paragon +paragons +parallel +parallels +paramour +paramours +parapets +paraquito +parasite +parasites +parca +parcel +parcell +parcels +parch +parched +parching +parchment +pard +pardon +pardona +pardoned +pardoner +pardoning +pardonne +pardonner +pardonnez +pardons +pare +pared +parel +parent +parentage +parents +parfect +paring +parings +paris +parish +parishioners +parisians +paritors +park +parks +parle +parler +parles +parley +parlez +parliament +parlors +parlour +parlous +parmacity +parolles +parricide +parricides +parrot +parrots +parsley +parson +part +partake +partaken +partaker +partakers +parted +parthia +parthian +parthians +parti +partial +partialize +partially +participate +participation +particle +particular +particularities +particularize +particularly +particulars +parties +parting +partisan +partisans +partition +partizan +partlet +partly +partner +partners +partridge +parts +party +pas +pash +pashed +pashful +pass +passable +passado +passage +passages +passant +passed +passenger +passengers +passes +passeth +passing +passio +passion +passionate +passioning +passions +passive +passport +passy +past +paste +pasterns +pasties +pastime +pastimes +pastoral +pastorals +pastors +pastry +pasture +pastures +pasty +pat +patay +patch +patchery +patches +pate +pated +patent +patents +paternal +pates +path +pathetical +paths +pathway +pathways +patience +patient +patiently +patients +patines +patrician +patricians +patrick +patrimony +patroclus +patron +patronage +patroness +patrons +patrum +patter +pattern +patterns +pattle +pauca +paucas +paul +paulina +paunch +paunches +pause +pauser +pauses +pausingly +pauvres +pav +paved +pavement +pavilion +pavilions +pavin +paw +pawn +pawns +paws +pax +pay +payest +paying +payment +payments +pays +paysan +paysans +pe +peace +peaceable +peaceably +peaceful +peacemakers +peaces +peach +peaches +peacock +peacocks +peak +peaking +peal +peals +pear +peard +pearl +pearls +pears +peas +peasant +peasantry +peasants +peascod +pease +peaseblossom +peat +peaten +peating +pebble +pebbled +pebbles +peck +pecks +peculiar +pecus +pedant +pedantical +pedascule +pede +pedestal +pedigree +pedlar +pedlars +pedro +peds +peel +peep +peeped +peeping +peeps +peer +peereth +peering +peerless +peers +peesel +peevish +peevishly +peflur +peg +pegasus +pegs +peise +peised +peize +pelf +pelican +pelion +pell +pella +pelleted +peloponnesus +pelt +pelting +pembroke +pen +penalties +penalty +penance +pence +pencil +pencill +pencils +pendant +pendent +pendragon +pendulous +penelope +penetrable +penetrate +penetrative +penitence +penitent +penitential +penitently +penitents +penker +penknife +penn +penned +penning +pennons +penny +pennyworth +pennyworths +pens +pense +pension +pensioners +pensive +pensived +pensively +pent +pentecost +penthesilea +penthouse +penurious +penury +peopl +people +peopled +peoples +pepin +pepper +peppercorn +peppered +per +peradventure +peradventures +perceiv +perceive +perceived +perceives +perceiveth +perch +perchance +percies +percussion +percy +perdie +perdita +perdition +perdonato +perdu +perdurable +perdurably +perdy +pere +peregrinate +peremptorily +peremptory +perfect +perfected +perfecter +perfectest +perfection +perfections +perfectly +perfectness +perfidious +perfidiously +perforce +perform +performance +performances +performed +performer +performers +performing +performs +perfum +perfume +perfumed +perfumer +perfumes +perge +perhaps +periapts +perigort +perigouna +peril +perilous +perils +period +periods +perish +perished +perishest +perisheth +perishing +periwig +perjur +perjure +perjured +perjuries +perjury +perk +perkes +permafoy +permanent +permission +permissive +permit +permitted +pernicious +perniciously +peroration +perpend +perpendicular +perpendicularly +perpetual +perpetually +perpetuity +perplex +perplexed +perplexity +pers +persecuted +persecutions +persecutor +perseus +persever +perseverance +persevers +persia +persian +persist +persisted +persistency +persistive +persists +person +personae +personage +personages +personal +personally +personate +personated +personates +personating +persons +perspective +perspectively +perspectives +perspicuous +persuade +persuaded +persuades +persuading +persuasion +persuasions +pert +pertain +pertaining +pertains +pertaunt +pertinent +pertly +perturb +perturbation +perturbations +perturbed +perus +perusal +peruse +perused +perusing +perverse +perversely +perverseness +pervert +perverted +peseech +pest +pester +pestiferous +pestilence +pestilent +pet +petar +peter +petit +petition +petitionary +petitioner +petitioners +petitions +peto +petrarch +petruchio +petter +petticoat +petticoats +pettiness +pettish +pettitoes +petty +peu +pew +pewter +pewterer +phaethon +phaeton +phantasime +phantasimes +phantasma +pharamond +pharaoh +pharsalia +pheasant +pheazar +phebe +phebes +pheebus +pheeze +phibbus +philadelphos +philario +philarmonus +philemon +philip +philippan +philippe +philippi +phillida +philo +philomel +philomela +philosopher +philosophers +philosophical +philosophy +philostrate +philotus +phlegmatic +phoebe +phoebus +phoenicia +phoenicians +phoenix +phorbus +photinus +phrase +phraseless +phrases +phrygia +phrygian +phrynia +physic +physical +physician +physicians +physics +pia +pibble +pible +picardy +pick +pickaxe +pickaxes +pickbone +picked +pickers +picking +pickle +picklock +pickpurse +picks +pickt +pickthanks +pictur +picture +pictured +pictures +pid +pie +piec +piece +pieces +piecing +pied +piedness +pier +pierc +pierce +pierced +pierces +pierceth +piercing +piercy +piers +pies +piety +pig +pigeon +pigeons +pight +pigmy +pigrogromitus +pike +pikes +pil +pilate +pilates +pilchers +pile +piles +pilf +pilfering +pilgrim +pilgrimage +pilgrims +pill +pillage +pillagers +pillar +pillars +pillicock +pillory +pillow +pillows +pills +pilot +pilots +pimpernell +pin +pinch +pinched +pinches +pinching +pindarus +pine +pined +pines +pinfold +pining +pinion +pink +pinn +pinnace +pins +pinse +pint +pintpot +pioned +pioneers +pioner +pioners +pious +pip +pipe +piper +pipers +pipes +piping +pippin +pippins +pirate +pirates +pisa +pisanio +pish +pismires +piss +pissing +pistol +pistols +pit +pitch +pitched +pitcher +pitchers +pitchy +piteous +piteously +pitfall +pith +pithless +pithy +pitie +pitied +pities +pitiful +pitifully +pitiless +pits +pittance +pittie +pittikins +pity +pitying +pius +plac +place +placed +placentio +places +placeth +placid +placing +plack +placket +plackets +plagu +plague +plagued +plagues +plaguing +plaguy +plain +plainer +plainest +plaining +plainings +plainly +plainness +plains +plainsong +plaintful +plaintiff +plaintiffs +plaints +planched +planet +planetary +planets +planks +plant +plantage +plantagenet +plantagenets +plantain +plantation +planted +planteth +plants +plash +plashy +plast +plaster +plasterer +plat +plate +plated +plates +platform +platforms +plats +platted +plausible +plausive +plautus +play +played +player +players +playeth +playfellow +playfellows +playhouse +playing +plays +plea +pleach +pleached +plead +pleaded +pleader +pleaders +pleading +pleads +pleas +pleasance +pleasant +pleasantly +please +pleased +pleaser +pleasers +pleases +pleasest +pleaseth +pleasing +pleasure +pleasures +plebeians +plebeii +plebs +pledge +pledges +pleines +plenitude +plenteous +plenteously +plenties +plentiful +plentifully +plenty +pless +plessed +plessing +pliant +plied +plies +plight +plighted +plighter +plod +plodded +plodders +plodding +plods +plood +ploody +plot +plots +plotted +plotter +plough +ploughed +ploughman +ploughmen +plow +plows +pluck +plucked +plucker +plucking +plucks +plue +plum +plume +plumed +plumes +plummet +plump +plumpy +plums +plung +plunge +plunged +plural +plurisy +plus +pluto +plutus +ply +po +pocket +pocketing +pockets +pocky +pody +poem +poesy +poet +poetical +poetry +poets +poictiers +poinards +poins +point +pointblank +pointed +pointing +points +pois +poise +poising +poison +poisoned +poisoner +poisoning +poisonous +poisons +poke +poking +pol +polack +polacks +poland +pold +pole +poleaxe +polecat +polecats +polemon +poles +poli +policies +policy +polish +polished +politic +politician +politicians +politicly +polixenes +poll +polluted +pollution +polonius +poltroons +polusion +polydamus +polydore +polyxena +pomander +pomegranate +pomewater +pomfret +pomgarnet +pommel +pomp +pompeius +pompey +pompion +pompous +pomps +pond +ponder +ponderous +ponds +poniard +poniards +pont +pontic +pontifical +ponton +pooh +pool +poole +poop +poor +poorer +poorest +poorly +pop +pope +popedom +popilius +popingay +popish +popp +poppy +pops +popular +popularity +populous +porch +porches +pore +poring +pork +porn +porpentine +porridge +porringer +port +portable +portage +portal +portance +portcullis +portend +portends +portent +portentous +portents +porter +porters +portia +portion +portly +portotartarossa +portrait +portraiture +ports +portugal +pose +posied +posies +position +positive +positively +posse +possess +possessed +possesses +possesseth +possessing +possession +possessions +possessor +posset +possets +possibilities +possibility +possible +possibly +possitable +post +poste +posted +posterior +posteriors +posterity +postern +posterns +posters +posthorse +posthorses +posthumus +posting +postmaster +posts +postscript +posture +postures +posy +pot +potable +potations +potato +potatoes +potch +potency +potent +potentates +potential +potently +potents +pothecary +pother +potion +potions +potpan +pots +potter +potting +pottle +pouch +poulter +poultice +poultney +pouncet +pound +pounds +pour +pourest +pouring +pourquoi +pours +pout +poverty +pow +powd +powder +power +powerful +powerfully +powerless +powers +pox +poys +poysam +prabbles +practic +practice +practiced +practicer +practices +practicing +practis +practisants +practise +practiser +practisers +practises +practising +praeclarissimus +praemunire +praetor +praetors +pragging +prague +prain +prains +prais +praise +praised +praises +praisest +praiseworthy +praising +prancing +prank +pranks +prat +prate +prated +prater +prating +prattle +prattler +prattling +prave +prawls +prawns +pray +prayer +prayers +praying +prays +pre +preach +preached +preachers +preaches +preaching +preachment +pread +preambulate +precedence +precedent +preceding +precept +preceptial +precepts +precinct +precious +preciously +precipice +precipitating +precipitation +precise +precisely +preciseness +precisian +precor +precurse +precursors +predeceased +predecessor +predecessors +predestinate +predicament +predict +prediction +predictions +predominance +predominant +predominate +preeches +preeminence +preface +prefer +preferment +preferments +preferr +preferreth +preferring +prefers +prefiguring +prefix +prefixed +preformed +pregnancy +pregnant +pregnantly +prejudicates +prejudice +prejudicial +prelate +premeditated +premeditation +premised +premises +prenez +prenominate +prentice +prentices +preordinance +prepar +preparation +preparations +prepare +prepared +preparedly +prepares +preparing +prepost +preposterous +preposterously +prerogatifes +prerogative +prerogatived +presage +presagers +presages +presageth +presaging +prescience +prescribe +prescript +prescription +prescriptions +prescripts +presence +presences +present +presentation +presented +presenter +presenters +presenteth +presenting +presently +presentment +presents +preserv +preservation +preservative +preserve +preserved +preserver +preservers +preserving +president +press +pressed +presser +presses +pressing +pressure +pressures +prest +prester +presume +presumes +presuming +presumption +presumptuous +presuppos +pret +pretence +pretences +pretend +pretended +pretending +pretense +pretext +pretia +prettier +prettiest +prettily +prettiness +pretty +prevail +prevailed +prevaileth +prevailing +prevailment +prevails +prevent +prevented +prevention +preventions +prevents +prey +preyful +preys +priam +priami +priamus +pribbles +price +prick +pricked +pricket +pricking +pricks +pricksong +pride +prides +pridge +prie +pried +prief +pries +priest +priesthood +priests +prig +primal +prime +primer +primero +primest +primitive +primo +primogenity +primrose +primroses +primy +prince +princely +princes +princess +principal +principalities +principality +principle +principles +princox +prings +print +printed +printing +printless +prints +prioress +priories +priority +priory +priscian +prison +prisoner +prisoners +prisonment +prisonnier +prisons +pristine +prithe +prithee +privacy +private +privately +privates +privilage +privileg +privilege +privileged +privileges +privilegio +privily +privity +privy +priz +prize +prized +prizer +prizes +prizest +prizing +pro +probable +probal +probation +proceed +proceeded +proceeders +proceeding +proceedings +proceeds +process +procession +proclaim +proclaimed +proclaimeth +proclaims +proclamation +proclamations +proconsul +procrastinate +procreant +procreants +procreation +procrus +proculeius +procur +procurator +procure +procured +procures +procuring +prodigal +prodigality +prodigally +prodigals +prodigies +prodigious +prodigiously +prodigy +proditor +produc +produce +produced +produces +producing +proface +profan +profanation +profane +profaned +profanely +profaneness +profaners +profaning +profess +professed +professes +profession +professions +professors +proffer +proffered +profferer +proffers +proficient +profit +profitable +profitably +profited +profiting +profitless +profits +profound +profoundest +profoundly +progenitors +progeny +progne +prognosticate +prognostication +progress +progression +prohibit +prohibition +project +projection +projects +prolixious +prolixity +prologue +prologues +prolong +prolongs +promethean +prometheus +promis +promise +promised +promises +promiseth +promising +promontory +promotion +promotions +prompt +prompted +promptement +prompter +prompting +prompts +prompture +promulgate +prone +prononcer +prononcez +pronoun +pronounc +pronounce +pronounced +pronouncing +pronouns +proof +proofs +prop +propagate +propagation +propend +propension +proper +properer +properly +propertied +properties +property +prophecies +prophecy +prophesied +prophesier +prophesy +prophesying +prophet +prophetess +prophetic +prophetically +prophets +propinquity +propontic +proportion +proportionable +proportions +propos +propose +proposed +proposer +proposes +proposing +proposition +propositions +propounded +propp +propre +propriety +props +propugnation +prorogue +prorogued +proscription +proscriptions +prose +prosecute +prosecution +proselytes +proserpina +prosp +prospect +prosper +prosperity +prospero +prosperous +prosperously +prospers +prostitute +prostrate +protect +protected +protection +protector +protectors +protectorship +protectress +protects +protest +protestation +protestations +protested +protester +protesting +protests +proteus +protheus +protract +protractive +proud +prouder +proudest +proudlier +proudly +prouds +prov +provand +prove +proved +provender +proverb +proverbs +proves +proveth +provide +provided +providence +provident +providently +provider +provides +province +provinces +provincial +proving +provision +proviso +provocation +provok +provoke +provoked +provoker +provokes +provoketh +provoking +provost +prowess +prudence +prudent +prun +prune +prunes +pruning +pry +prying +psalm +psalmist +psalms +psalteries +ptolemies +ptolemy +public +publican +publication +publicly +publicola +publish +published +publisher +publishing +publius +pucelle +puck +pudder +pudding +puddings +puddle +puddled +pudency +pueritia +puff +puffing +puffs +pugging +puis +puissance +puissant +puke +puking +pulcher +puling +pull +puller +pullet +pulling +pulls +pulpit +pulpiter +pulpits +pulse +pulsidge +pump +pumpion +pumps +pun +punched +punish +punished +punishes +punishment +punishments +punk +punto +puny +pupil +pupils +puppet +puppets +puppies +puppy +pur +purblind +purchas +purchase +purchased +purchases +purchaseth +purchasing +pure +purely +purer +purest +purg +purgation +purgative +purgatory +purge +purged +purgers +purging +purifies +purifying +puritan +purity +purlieus +purple +purpled +purples +purport +purpos +purpose +purposed +purposely +purposes +purposeth +purposing +purr +purs +purse +pursents +purses +pursu +pursue +pursued +pursuers +pursues +pursuest +pursueth +pursuing +pursuit +pursuivant +pursuivants +pursy +purus +purveyor +push +pushes +pusillanimity +put +putrefy +putrified +puts +putter +putting +puttock +puzzel +puzzle +puzzled +puzzles +py +pygmalion +pygmies +pygmy +pyramid +pyramides +pyramids +pyramis +pyramises +pyramus +pyrenean +pyrrhus +pythagoras +qu +quadrangle +quae +quaff +quaffing +quagmire +quail +quailing +quails +quaint +quaintly +quak +quake +quakes +qualification +qualified +qualifies +qualify +qualifying +qualite +qualities +quality +qualm +qualmish +quam +quand +quando +quantities +quantity +quare +quarrel +quarrell +quarreller +quarrelling +quarrelous +quarrels +quarrelsome +quarries +quarry +quart +quarter +quartered +quartering +quarters +quarts +quasi +quat +quatch +quay +que +quean +queas +queasiness +queasy +queen +queens +quell +queller +quench +quenched +quenching +quenchless +quern +quest +questant +question +questionable +questioned +questioning +questionless +questions +questrists +quests +queubus +qui +quick +quicken +quickens +quicker +quicklier +quickly +quickness +quicksand +quicksands +quicksilverr +quid +quiddities +quiddits +quier +quiet +quieter +quietly +quietness +quietus +quill +quillets +quills +quilt +quinapalus +quince +quinces +quintain +quintessence +quintus +quip +quips +quire +quiring +quirk +quirks +quis +quit +quite +quits +quittance +quitted +quitting +quiver +quivering +quivers +quo +quod +quoifs +quoint +quoit +quoits +quondam +quoniam +quote +quoted +quotes +quoth +quotidian +r +rabbit +rabble +rabblement +race +rack +rackers +racket +rackets +racking +racks +radiance +radiant +radish +rafe +raft +rag +rage +rages +rageth +ragg +ragged +raggedness +raging +ragozine +rags +rah +rail +railed +railer +railest +raileth +railing +rails +raiment +rain +rainbow +raineth +raining +rainold +rains +rainy +rais +raise +raised +raises +raising +raisins +rak +rake +rakers +rakes +ral +rald +ralph +ram +rambures +ramm +rampallian +rampant +ramping +rampir +ramps +rams +ramsey +ramston +ran +rance +rancorous +rancors +rancour +random +rang +range +ranged +rangers +ranges +ranging +rank +ranker +rankest +ranking +rankle +rankly +rankness +ranks +ransack +ransacking +ransom +ransomed +ransoming +ransomless +ransoms +rant +ranting +rap +rape +rapes +rapier +rapiers +rapine +raps +rapt +rapture +raptures +rar +rare +rarely +rareness +rarer +rarest +rarities +rarity +rascal +rascalliest +rascally +rascals +rased +rash +rasher +rashly +rashness +rat +ratcatcher +ratcliff +rate +rated +rately +rates +rather +ratherest +ratified +ratifiers +ratify +rating +rational +ratolorum +rats +ratsbane +rattle +rattles +rattling +rature +raught +rav +rave +ravel +raven +ravening +ravenous +ravens +ravenspurgh +raves +ravin +raving +ravish +ravished +ravisher +ravishing +ravishments +raw +rawer +rawly +rawness +ray +rayed +rays +raz +raze +razed +razes +razeth +razing +razor +razorable +razors +razure +re +reach +reaches +reacheth +reaching +read +reader +readiest +readily +readiness +reading +readins +reads +ready +real +really +realm +realms +reap +reapers +reaping +reaps +rear +rears +rearward +reason +reasonable +reasonably +reasoned +reasoning +reasonless +reasons +reave +rebate +rebato +rebeck +rebel +rebell +rebelling +rebellion +rebellious +rebels +rebound +rebuk +rebuke +rebukeable +rebuked +rebukes +rebus +recall +recant +recantation +recanter +recanting +receipt +receipts +receiv +receive +received +receiver +receives +receivest +receiveth +receiving +receptacle +rechate +reciprocal +reciprocally +recite +recited +reciterai +reck +recking +reckless +reckon +reckoned +reckoning +reckonings +recks +reclaim +reclaims +reclusive +recognizance +recognizances +recoil +recoiling +recollected +recomforted +recomforture +recommend +recommended +recommends +recompens +recompense +reconcil +reconcile +reconciled +reconcilement +reconciler +reconciles +reconciliation +record +recordation +recorded +recorder +recorders +records +recount +recounted +recounting +recountments +recounts +recourse +recov +recover +recoverable +recovered +recoveries +recovers +recovery +recreant +recreants +recreate +recreation +rectify +rector +rectorship +recure +recured +red +redbreast +redder +reddest +rede +redeem +redeemed +redeemer +redeeming +redeems +redeliver +redemption +redime +redness +redoubled +redoubted +redound +redress +redressed +redresses +reduce +reechy +reed +reeds +reek +reeking +reeks +reeky +reel +reeleth +reeling +reels +refell +refer +reference +referr +referred +refigured +refin +refined +reflect +reflecting +reflection +reflex +reform +reformation +reformed +refractory +refrain +refresh +refreshing +reft +refts +refuge +refus +refusal +refuse +refused +refusest +refusing +reg +regal +regalia +regan +regard +regardance +regarded +regardfully +regarding +regards +regenerate +regent +regentship +regia +regiment +regiments +regina +region +regions +regist +register +registers +regreet +regreets +regress +reguerdon +regular +rehears +rehearsal +rehearse +reign +reigned +reignier +reigning +reigns +rein +reinforc +reinforce +reinforcement +reins +reiterate +reject +rejected +rejoic +rejoice +rejoices +rejoiceth +rejoicing +rejoicingly +rejoindure +rejourn +rel +relapse +relate +relates +relation +relations +relative +releas +release +released +releasing +relent +relenting +relents +reliances +relics +relief +reliev +relieve +relieved +relieves +relieving +religion +religions +religious +religiously +relinquish +reliques +reliquit +relish +relume +rely +relying +remain +remainder +remainders +remained +remaineth +remaining +remains +remark +remarkable +remediate +remedied +remedies +remedy +rememb +remember +remembered +remembers +remembrance +remembrancer +remembrances +remercimens +remiss +remission +remissness +remit +remnant +remnants +remonstrance +remorse +remorseful +remorseless +remote +remotion +remov +remove +removed +removedness +remover +removes +removing +remunerate +remuneration +rence +rend +render +rendered +renders +rendezvous +renegado +renege +reneges +renew +renewed +renewest +renounce +renouncement +renouncing +renowmed +renown +renowned +rent +rents +repaid +repair +repaired +repairing +repairs +repass +repast +repasture +repay +repaying +repays +repeal +repealing +repeals +repeat +repeated +repeating +repeats +repel +repent +repentance +repentant +repented +repenting +repents +repetition +repetitions +repin +repine +repining +replant +replenish +replenished +replete +replication +replied +replies +repliest +reply +replying +report +reported +reporter +reportest +reporting +reportingly +reports +reposal +repose +reposeth +reposing +repossess +reprehend +reprehended +reprehending +represent +representing +reprieve +reprieves +reprisal +reproach +reproaches +reproachful +reproachfully +reprobate +reprobation +reproof +reprov +reprove +reproveable +reproves +reproving +repugn +repugnancy +repugnant +repulse +repulsed +repurchas +repured +reputation +repute +reputed +reputeless +reputes +reputing +request +requested +requesting +requests +requiem +requir +require +required +requires +requireth +requiring +requisite +requisites +requit +requital +requite +requited +requites +rer +rere +rers +rescu +rescue +rescued +rescues +rescuing +resemblance +resemble +resembled +resembles +resembleth +resembling +reserv +reservation +reserve +reserved +reserves +reside +residence +resident +resides +residing +residue +resign +resignation +resist +resistance +resisted +resisting +resists +resolute +resolutely +resolutes +resolution +resolv +resolve +resolved +resolvedly +resolves +resolveth +resort +resorted +resounding +resounds +respeaking +respect +respected +respecting +respective +respectively +respects +respice +respite +respites +responsive +respose +ress +rest +rested +resteth +restful +resting +restitution +restless +restor +restoration +restorative +restore +restored +restores +restoring +restrain +restrained +restraining +restrains +restraint +rests +resty +resum +resume +resumes +resurrections +retail +retails +retain +retainers +retaining +retell +retention +retentive +retinue +retir +retire +retired +retirement +retires +retiring +retold +retort +retorts +retourne +retract +retreat +retrograde +rets +return +returned +returnest +returneth +returning +returns +revania +reveal +reveals +revel +reveler +revell +reveller +revellers +revelling +revelry +revels +reveng +revenge +revenged +revengeful +revengement +revenger +revengers +revenges +revenging +revengingly +revenue +revenues +reverb +reverberate +reverbs +reverenc +reverence +reverend +reverent +reverently +revers +reverse +reversion +reverted +review +reviewest +revil +revile +revisits +reviv +revive +revives +reviving +revok +revoke +revokement +revolt +revolted +revolting +revolts +revolution +revolutions +revolve +revolving +reward +rewarded +rewarder +rewarding +rewards +reword +reworded +rex +rey +reynaldo +rford +rful +rfull +rhapsody +rheims +rhenish +rhesus +rhetoric +rheum +rheumatic +rheums +rheumy +rhinoceros +rhodes +rhodope +rhubarb +rhym +rhyme +rhymers +rhymes +rhyming +rialto +rib +ribald +riband +ribands +ribaudred +ribb +ribbed +ribbon +ribbons +ribs +rice +rich +richard +richer +riches +richest +richly +richmond +richmonds +rid +riddance +ridden +riddle +riddles +riddling +ride +rider +riders +rides +ridest +rideth +ridge +ridges +ridiculous +riding +rids +rien +ries +rifle +rift +rifted +rig +rigg +riggish +right +righteous +righteously +rightful +rightfully +rightly +rights +rigol +rigorous +rigorously +rigour +ril +rim +rin +rinaldo +rind +ring +ringing +ringleader +ringlets +rings +ringwood +riot +rioter +rioting +riotous +riots +rip +ripe +ripely +ripen +ripened +ripeness +ripening +ripens +riper +ripest +riping +ripp +ripping +rise +risen +rises +riseth +rish +rising +rite +rites +rivage +rival +rivality +rivall +rivals +rive +rived +rivelled +river +rivers +rivet +riveted +rivets +rivo +rj +rless +road +roads +roam +roaming +roan +roar +roared +roarers +roaring +roars +roast +roasted +rob +roba +robas +robb +robbed +robber +robbers +robbery +robbing +robe +robed +robert +robes +robin +robs +robustious +rochester +rochford +rock +rocks +rocky +rod +rode +roderigo +rods +roe +roes +roger +rogero +rogue +roguery +rogues +roguish +roi +roisting +roll +rolled +rolling +rolls +rom +romage +roman +romano +romanos +romans +rome +romeo +romish +rondure +ronyon +rood +roof +roofs +rook +rooks +rooky +room +rooms +root +rooted +rootedly +rooteth +rooting +roots +rope +ropery +ropes +roping +ros +rosalind +rosalinda +rosalinde +rosaline +roscius +rose +rosed +rosemary +rosencrantz +roses +ross +rosy +rot +rote +roted +rother +rotherham +rots +rotted +rotten +rottenness +rotting +rotundity +rouen +rough +rougher +roughest +roughly +roughness +round +rounded +roundel +rounder +roundest +rounding +roundly +rounds +roundure +rous +rouse +roused +rousillon +rously +roussi +rout +routed +routs +rove +rover +row +rowel +rowland +rowlands +roy +royal +royalize +royally +royalties +royalty +roynish +rs +rt +rub +rubb +rubbing +rubbish +rubies +rubious +rubs +ruby +rud +rudand +rudder +ruddiness +ruddock +ruddy +rude +rudely +rudeness +ruder +rudesby +rudest +rudiments +rue +rued +ruff +ruffian +ruffians +ruffle +ruffling +ruffs +rug +rugby +rugemount +rugged +ruin +ruinate +ruined +ruining +ruinous +ruins +rul +rule +ruled +ruler +rulers +rules +ruling +rumble +ruminaies +ruminat +ruminate +ruminated +ruminates +rumination +rumor +rumour +rumourer +rumours +rump +run +runagate +runagates +runaway +runaways +rung +runn +runner +runners +running +runs +rupture +ruptures +rural +rush +rushes +rushing +rushling +rushy +russet +russia +russian +russians +rust +rusted +rustic +rustically +rustics +rustle +rustling +rusts +rusty +rut +ruth +ruthful +ruthless +rutland +ruttish +ry +rye +rything +s +sa +saba +sabbath +sable +sables +sack +sackbuts +sackcloth +sacked +sackerson +sacks +sacrament +sacred +sacrific +sacrifice +sacrificers +sacrifices +sacrificial +sacrificing +sacrilegious +sacring +sad +sadder +saddest +saddle +saddler +saddles +sadly +sadness +saf +safe +safeguard +safely +safer +safest +safeties +safety +saffron +sag +sage +sagittary +said +saidst +sail +sailing +sailmaker +sailor +sailors +sails +sain +saint +sainted +saintlike +saints +saith +sake +sakes +sala +salad +salamander +salary +sale +salerio +salicam +salique +salisbury +sall +sallet +sallets +sallies +sallow +sally +salmon +salmons +salt +salter +saltiers +saltness +saltpetre +salutation +salutations +salute +saluted +salutes +saluteth +salv +salvation +salve +salving +same +samingo +samp +sampire +sample +sampler +sampson +samson +samsons +sancta +sanctified +sanctifies +sanctify +sanctimonies +sanctimonious +sanctimony +sanctities +sanctity +sanctuarize +sanctuary +sand +sandal +sandbag +sanded +sands +sandy +sandys +sang +sanguine +sanguis +sanity +sans +santrailles +sap +sapient +sapit +sapless +sapling +sapphire +sapphires +saracens +sarcenet +sard +sardians +sardinia +sardis +sarum +sat +satan +satchel +sate +sated +satiate +satiety +satin +satire +satirical +satis +satisfaction +satisfied +satisfies +satisfy +satisfying +saturday +saturdays +saturn +saturnine +saturninus +satyr +satyrs +sauc +sauce +sauced +saucers +sauces +saucily +sauciness +saucy +sauf +saunder +sav +savage +savagely +savageness +savagery +savages +save +saved +saves +saving +saviour +savory +savour +savouring +savours +savoury +savoy +saw +sawed +sawest +sawn +sawpit +saws +sawyer +saxons +saxony +saxton +say +sayest +saying +sayings +says +sayst +sblood +sc +scab +scabbard +scabs +scaffold +scaffoldage +scal +scald +scalded +scalding +scale +scaled +scales +scaling +scall +scalp +scalps +scaly +scamble +scambling +scamels +scan +scandal +scandaliz +scandalous +scandy +scann +scant +scanted +scanter +scanting +scantling +scants +scap +scape +scaped +scapes +scapeth +scar +scarce +scarcely +scarcity +scare +scarecrow +scarecrows +scarf +scarfed +scarfs +scaring +scarlet +scarr +scarre +scars +scarus +scath +scathe +scathful +scatt +scatter +scattered +scattering +scatters +scelera +scelerisque +scene +scenes +scent +scented +scept +scepter +sceptre +sceptred +sceptres +schedule +schedules +scholar +scholarly +scholars +school +schoolboy +schoolboys +schoolfellows +schooling +schoolmaster +schoolmasters +schools +sciatica +sciaticas +science +sciences +scimitar +scion +scions +scissors +scoff +scoffer +scoffing +scoffs +scoggin +scold +scolding +scolds +sconce +scone +scope +scopes +scorch +scorched +score +scored +scores +scoring +scorn +scorned +scornful +scornfully +scorning +scorns +scorpion +scorpions +scot +scotch +scotches +scotland +scots +scottish +scoundrels +scour +scoured +scourg +scourge +scouring +scout +scouts +scowl +scrap +scrape +scraping +scraps +scratch +scratches +scratching +scream +screams +screech +screeching +screen +screens +screw +screws +scribbl +scribbled +scribe +scribes +scrimers +scrip +scrippage +scripture +scriptures +scrivener +scroll +scrolls +scroop +scrowl +scroyles +scrubbed +scruple +scruples +scrupulous +scuffles +scuffling +scullion +sculls +scum +scurril +scurrility +scurrilous +scurvy +scuse +scut +scutcheon +scutcheons +scylla +scythe +scythed +scythia +scythian +sdeath +se +sea +seacoal +seafaring +seal +sealed +sealing +seals +seam +seamen +seamy +seaport +sear +searce +search +searchers +searches +searcheth +searching +seared +seas +seasick +seaside +season +seasoned +seasons +seat +seated +seats +sebastian +second +secondarily +secondary +seconded +seconds +secrecy +secret +secretaries +secretary +secretly +secrets +sect +sectary +sects +secundo +secure +securely +securing +security +sedg +sedge +sedges +sedgy +sedition +seditious +seduc +seduce +seduced +seducer +seducing +see +seed +seeded +seedness +seeds +seedsman +seein +seeing +seek +seeking +seeks +seel +seeling +seely +seem +seemed +seemers +seemest +seemeth +seeming +seemingly +seemly +seems +seen +seer +sees +seese +seest +seethe +seethes +seething +seeting +segregation +seigneur +seigneurs +seiz +seize +seized +seizes +seizeth +seizing +seizure +seld +seldom +select +seleucus +self +selfsame +sell +seller +selling +sells +selves +semblable +semblably +semblance +semblances +semblative +semi +semicircle +semiramis +semper +sempronius +senate +senator +senators +send +sender +sendeth +sending +sends +seneca +senior +seniory +senis +sennet +senoys +sense +senseless +senses +sensible +sensibly +sensual +sensuality +sent +sentenc +sentence +sentences +sententious +sentinel +sentinels +separable +separate +separated +separates +separation +septentrion +sepulchre +sepulchres +sepulchring +sequel +sequence +sequent +sequest +sequester +sequestration +sere +serenis +serge +sergeant +serious +seriously +sermon +sermons +serpent +serpentine +serpents +serpigo +serv +servant +servanted +servants +serve +served +server +serves +serveth +service +serviceable +services +servile +servility +servilius +serving +servingman +servingmen +serviteur +servitor +servitors +servitude +sessa +session +sessions +sestos +set +setebos +sets +setter +setting +settle +settled +settlest +settling +sev +seven +sevenfold +sevennight +seventeen +seventh +seventy +sever +several +severally +severals +severe +severed +severely +severest +severing +severity +severn +severs +sew +seward +sewer +sewing +sex +sexes +sexton +sextus +seymour +seyton +sfoot +sh +shackle +shackles +shade +shades +shadow +shadowed +shadowing +shadows +shadowy +shady +shafalus +shaft +shafts +shag +shak +shake +shaked +shaken +shakes +shaking +shales +shall +shallenge +shallow +shallowest +shallowly +shallows +shalt +sham +shambles +shame +shamed +shameful +shamefully +shameless +shames +shamest +shaming +shank +shanks +shap +shape +shaped +shapeless +shapen +shapes +shaping +shar +shard +sharded +shards +share +shared +sharers +shares +sharing +shark +sharp +sharpen +sharpened +sharpens +sharper +sharpest +sharply +sharpness +sharps +shatter +shav +shave +shaven +shaw +she +sheaf +sheal +shear +shearers +shearing +shearman +shears +sheath +sheathe +sheathed +sheathes +sheathing +sheaved +sheaves +shed +shedding +sheds +sheen +sheep +sheepcote +sheepcotes +sheeps +sheepskins +sheer +sheet +sheeted +sheets +sheffield +shelf +shell +shells +shelt +shelter +shelters +shelves +shelving +shelvy +shent +shepherd +shepherdes +shepherdess +shepherdesses +shepherds +sher +sheriff +sherris +shes +sheweth +shield +shielded +shields +shift +shifted +shifting +shifts +shilling +shillings +shin +shine +shines +shineth +shining +shins +shiny +ship +shipboard +shipman +shipmaster +shipmen +shipp +shipped +shipping +ships +shipt +shipwreck +shipwrecking +shipwright +shipwrights +shire +shirley +shirt +shirts +shive +shiver +shivering +shivers +shoal +shoals +shock +shocks +shod +shoe +shoeing +shoemaker +shoes +shog +shone +shook +shoon +shoot +shooter +shootie +shooting +shoots +shop +shops +shore +shores +shorn +short +shortcake +shorten +shortened +shortens +shorter +shortly +shortness +shot +shotten +shoughs +should +shoulder +shouldering +shoulders +shouldst +shout +shouted +shouting +shouts +shov +shove +shovel +shovels +show +showed +shower +showers +showest +showing +shown +shows +shreds +shrew +shrewd +shrewdly +shrewdness +shrewish +shrewishly +shrewishness +shrews +shrewsbury +shriek +shrieking +shrieks +shrieve +shrift +shrill +shriller +shrills +shrilly +shrimp +shrine +shrink +shrinking +shrinks +shriv +shrive +shriver +shrives +shriving +shroud +shrouded +shrouding +shrouds +shrove +shrow +shrows +shrub +shrubs +shrug +shrugs +shrunk +shudd +shudders +shuffl +shuffle +shuffled +shuffling +shun +shunless +shunn +shunned +shunning +shuns +shut +shuts +shuttle +shy +shylock +si +sibyl +sibylla +sibyls +sicil +sicilia +sicilian +sicilius +sicils +sicily +sicinius +sick +sicken +sickens +sicker +sickle +sicklemen +sicklied +sickliness +sickly +sickness +sicles +sicyon +side +sided +sides +siege +sieges +sienna +sies +sieve +sift +sifted +sigeia +sigh +sighed +sighing +sighs +sight +sighted +sightless +sightly +sights +sign +signal +signet +signieur +significant +significants +signified +signifies +signify +signifying +signior +signiories +signiors +signiory +signor +signories +signs +signum +silenc +silence +silenced +silencing +silent +silently +silius +silk +silken +silkman +silks +silliest +silliness +silling +silly +silva +silver +silvered +silverly +silvia +silvius +sima +simile +similes +simois +simon +simony +simp +simpcox +simple +simpleness +simpler +simples +simplicity +simply +simular +simulation +sin +since +sincere +sincerely +sincerity +sinel +sinew +sinewed +sinews +sinewy +sinful +sinfully +sing +singe +singeing +singer +singes +singeth +singing +single +singled +singleness +singly +sings +singular +singulariter +singularities +singularity +singuled +sinister +sink +sinking +sinks +sinn +sinner +sinners +sinning +sinon +sins +sip +sipping +sir +sire +siren +sirrah +sirs +sist +sister +sisterhood +sisterly +sisters +sit +sith +sithence +sits +sitting +situate +situation +situations +siward +six +sixpence +sixpences +sixpenny +sixteen +sixth +sixty +siz +size +sizes +sizzle +skains +skamble +skein +skelter +skies +skilful +skilfully +skill +skilless +skillet +skillful +skills +skim +skimble +skin +skinker +skinny +skins +skip +skipp +skipper +skipping +skirmish +skirmishes +skirr +skirted +skirts +skittish +skulking +skull +skulls +sky +skyey +skyish +slab +slack +slackly +slackness +slain +slake +sland +slander +slandered +slanderer +slanderers +slandering +slanderous +slanders +slash +slaught +slaughter +slaughtered +slaughterer +slaughterman +slaughtermen +slaughterous +slaughters +slave +slaver +slavery +slaves +slavish +slay +slayeth +slaying +slays +sleave +sledded +sleek +sleekly +sleep +sleeper +sleepers +sleepest +sleeping +sleeps +sleepy +sleeve +sleeves +sleid +sleided +sleight +sleights +slender +slenderer +slenderly +slept +slew +slewest +slice +slid +slide +slides +sliding +slight +slighted +slightest +slightly +slightness +slights +slily +slime +slimy +slings +slink +slip +slipp +slipper +slippers +slippery +slips +slish +slit +sliver +slobb +slomber +slop +slope +slops +sloth +slothful +slough +slovenly +slovenry +slow +slower +slowly +slowness +slubber +slug +sluggard +sluggardiz +sluggish +sluic +slumb +slumber +slumbers +slumbery +slunk +slut +sluts +sluttery +sluttish +sluttishness +sly +slys +smack +smacking +smacks +small +smaller +smallest +smallness +smalus +smart +smarting +smartly +smatch +smatter +smear +smell +smelling +smells +smelt +smil +smile +smiled +smiles +smilest +smilets +smiling +smilingly +smirch +smirched +smit +smite +smites +smith +smithfield +smock +smocks +smok +smoke +smoked +smokes +smoking +smoky +smooth +smoothed +smoothing +smoothly +smoothness +smooths +smote +smoth +smother +smothered +smothering +smug +smulkin +smutch +snaffle +snail +snails +snake +snakes +snaky +snap +snapp +snapper +snar +snare +snares +snarl +snarleth +snarling +snatch +snatchers +snatches +snatching +sneak +sneaking +sneap +sneaping +sneck +snip +snipe +snipt +snore +snores +snoring +snorting +snout +snow +snowballs +snowed +snowy +snuff +snuffs +snug +so +soak +soaking +soaks +soar +soaring +soars +sob +sobbing +sober +soberly +sobriety +sobs +sociable +societies +society +socks +socrates +sod +sodden +soe +soever +soft +soften +softens +softer +softest +softly +softness +soil +soiled +soilure +soit +sojourn +sol +sola +solace +solanio +sold +soldat +solder +soldest +soldier +soldiers +soldiership +sole +solely +solem +solemn +solemness +solemnities +solemnity +solemniz +solemnize +solemnized +solemnly +soles +solicit +solicitation +solicited +soliciting +solicitings +solicitor +solicits +solid +solidares +solidity +solinus +solitary +solomon +solon +solum +solus +solyman +some +somebody +someone +somerset +somerville +something +sometime +sometimes +somever +somewhat +somewhere +somewhither +somme +son +sonance +song +songs +sonnet +sonneting +sonnets +sons +sont +sonties +soon +sooner +soonest +sooth +soothe +soothers +soothing +soothsay +soothsayer +sooty +sop +sophister +sophisticated +sophy +sops +sorcerer +sorcerers +sorceress +sorceries +sorcery +sore +sorel +sorely +sorer +sores +sorrier +sorriest +sorrow +sorrowed +sorrowest +sorrowful +sorrowing +sorrows +sorry +sort +sortance +sorted +sorting +sorts +sossius +sot +soto +sots +sottish +soud +sought +soul +sould +soulless +souls +sound +sounded +sounder +soundest +sounding +soundless +soundly +soundness +soundpost +sounds +sour +source +sources +sourest +sourly +sours +sous +souse +south +southam +southampton +southerly +southern +southward +southwark +southwell +souviendrai +sov +sovereign +sovereignest +sovereignly +sovereignty +sovereignvours +sow +sowing +sowl +sowter +space +spaces +spacious +spade +spades +spain +spak +spake +spakest +span +spangle +spangled +spaniard +spaniel +spaniels +spanish +spann +spans +spar +spare +spares +sparing +sparingly +spark +sparkle +sparkles +sparkling +sparks +sparrow +sparrows +sparta +spartan +spavin +spavins +spawn +speak +speaker +speakers +speakest +speaketh +speaking +speaks +spear +speargrass +spears +special +specialities +specially +specialties +specialty +specify +speciously +spectacle +spectacled +spectacles +spectators +spectatorship +speculation +speculations +speculative +sped +speech +speeches +speechless +speed +speeded +speedier +speediest +speedily +speediness +speeding +speeds +speedy +speens +spell +spelling +spells +spelt +spencer +spend +spendest +spending +spends +spendthrift +spent +sperato +sperm +spero +sperr +spher +sphere +sphered +spheres +spherical +sphery +sphinx +spice +spiced +spicery +spices +spider +spiders +spied +spies +spieth +spightfully +spigot +spill +spilling +spills +spilt +spilth +spin +spinii +spinners +spinster +spinsters +spire +spirit +spirited +spiritless +spirits +spiritual +spiritualty +spirt +spit +spital +spite +spited +spiteful +spites +spits +spitted +spitting +splay +spleen +spleenful +spleens +spleeny +splendour +splenitive +splinter +splinters +split +splits +splitted +splitting +spoil +spoils +spok +spoke +spoken +spokes +spokesman +sponge +spongy +spoon +spoons +sport +sportful +sporting +sportive +sports +spot +spotless +spots +spotted +spousal +spouse +spout +spouting +spouts +sprag +sprang +sprat +sprawl +spray +sprays +spread +spreading +spreads +sprighted +sprightful +sprightly +sprigs +spring +springe +springes +springeth +springhalt +springing +springs +springtime +sprinkle +sprinkles +sprite +sprited +spritely +sprites +spriting +sprout +spruce +sprung +spun +spur +spurio +spurn +spurns +spurr +spurrer +spurring +spurs +spy +spying +squabble +squadron +squadrons +squand +squar +square +squarer +squares +squash +squeak +squeaking +squeal +squealing +squeezes +squeezing +squele +squier +squints +squiny +squire +squires +squirrel +st +stab +stabb +stabbed +stabbing +stable +stableness +stables +stablish +stablishment +stabs +stacks +staff +stafford +staffords +staffordshire +stag +stage +stages +stagger +staggering +staggers +stags +staid +staider +stain +stained +staines +staineth +staining +stainless +stains +stair +stairs +stake +stakes +stale +staled +stalk +stalking +stalks +stall +stalling +stalls +stamford +stammer +stamp +stamped +stamps +stanch +stanchless +stand +standard +standards +stander +standers +standest +standeth +standing +stands +staniel +stanley +stanze +stanzo +stanzos +staple +staples +star +stare +stared +stares +staring +starings +stark +starkly +starlight +starling +starr +starry +stars +start +started +starting +startingly +startle +startles +starts +starv +starve +starved +starvelackey +starveling +starveth +starving +state +statelier +stately +states +statesman +statesmen +statilius +station +statist +statists +statue +statues +stature +statures +statute +statutes +stave +staves +stay +stayed +stayest +staying +stays +stead +steaded +steadfast +steadier +steads +steal +stealer +stealers +stealing +steals +stealth +stealthy +steed +steeds +steel +steeled +steely +steep +steeped +steeple +steeples +steeps +steepy +steer +steerage +steering +steers +stelled +stem +stemming +stench +step +stepdame +stephano +stephen +stepmothers +stepp +stepping +steps +sterile +sterility +sterling +stern +sternage +sterner +sternest +sternness +steterat +stew +steward +stewards +stewardship +stewed +stews +stick +sticking +stickler +sticks +stiff +stiffen +stiffly +stifle +stifled +stifles +stigmatic +stigmatical +stile +still +stiller +stillest +stillness +stilly +sting +stinging +stingless +stings +stink +stinking +stinkingly +stinks +stint +stinted +stints +stir +stirr +stirred +stirrer +stirrers +stirreth +stirring +stirrup +stirrups +stirs +stitchery +stitches +stithied +stithy +stoccadoes +stoccata +stock +stockfish +stocking +stockings +stockish +stocks +stog +stogs +stoics +stokesly +stol +stole +stolen +stolest +stomach +stomachers +stomaching +stomachs +ston +stone +stonecutter +stones +stonish +stony +stood +stool +stools +stoop +stooping +stoops +stop +stope +stopp +stopped +stopping +stops +stor +store +storehouse +storehouses +stores +stories +storm +stormed +storming +storms +stormy +story +stoup +stoups +stout +stouter +stoutly +stoutness +stover +stow +stowage +stowed +strachy +stragglers +straggling +straight +straightest +straightway +strain +strained +straining +strains +strait +straited +straiter +straitly +straitness +straits +strand +strange +strangely +strangeness +stranger +strangers +strangest +strangle +strangled +strangler +strangles +strangling +strappado +straps +stratagem +stratagems +stratford +strato +straw +strawberries +strawberry +straws +strawy +stray +straying +strays +streak +streaks +stream +streamers +streaming +streams +streching +street +streets +strength +strengthen +strengthened +strengthless +strengths +stretch +stretched +stretches +stretching +strew +strewing +strewings +strewments +stricken +strict +stricter +strictest +strictly +stricture +stride +strides +striding +strife +strifes +strik +strike +strikers +strikes +strikest +striking +string +stringless +strings +strip +stripes +stripling +striplings +stripp +stripping +striv +strive +strives +striving +strok +stroke +strokes +strond +stronds +strong +stronger +strongest +strongly +strooke +strossers +strove +strown +stroy +struck +strucken +struggle +struggles +struggling +strumpet +strumpeted +strumpets +strung +strut +struts +strutted +strutting +stubble +stubborn +stubbornest +stubbornly +stubbornness +stuck +studded +student +students +studied +studies +studious +studiously +studs +study +studying +stuff +stuffing +stuffs +stumble +stumbled +stumblest +stumbling +stump +stumps +stung +stupefy +stupid +stupified +stuprum +sturdy +sty +styga +stygian +styl +style +styx +su +sub +subcontracted +subdu +subdue +subdued +subduements +subdues +subduing +subject +subjected +subjection +subjects +submerg +submission +submissive +submit +submits +submitting +suborn +subornation +suborned +subscrib +subscribe +subscribed +subscribes +subscription +subsequent +subsidies +subsidy +subsist +subsisting +substance +substances +substantial +substitute +substituted +substitutes +substitution +subtile +subtilly +subtle +subtleties +subtlety +subtly +subtractors +suburbs +subversion +subverts +succedant +succeed +succeeded +succeeders +succeeding +succeeds +success +successantly +successes +successful +successfully +succession +successive +successively +successor +successors +succour +succours +such +suck +sucker +suckers +sucking +suckle +sucks +sudden +suddenly +sue +sued +suerly +sues +sueth +suff +suffer +sufferance +sufferances +suffered +suffering +suffers +suffic +suffice +sufficed +suffices +sufficeth +sufficiency +sufficient +sufficiently +sufficing +sufficit +suffigance +suffocate +suffocating +suffocation +suffolk +suffrage +suffrages +sug +sugar +sugarsop +suggest +suggested +suggesting +suggestion +suggestions +suggests +suis +suit +suitable +suited +suiting +suitor +suitors +suits +suivez +sullen +sullens +sullied +sullies +sully +sulph +sulpherous +sulphur +sulphurous +sultan +sultry +sum +sumless +summ +summa +summary +summer +summers +summit +summon +summoners +summons +sumpter +sumptuous +sumptuously +sums +sun +sunbeams +sunburning +sunburnt +sund +sunday +sundays +sunder +sunders +sundry +sung +sunk +sunken +sunny +sunrising +suns +sunset +sunshine +sup +super +superficial +superficially +superfluity +superfluous +superfluously +superflux +superior +supernal +supernatural +superpraise +superscript +superscription +superserviceable +superstition +superstitious +superstitiously +supersubtle +supervise +supervisor +supp +supper +suppers +suppertime +supping +supplant +supple +suppler +suppliance +suppliant +suppliants +supplicant +supplication +supplications +supplie +supplied +supplies +suppliest +supply +supplyant +supplying +supplyment +support +supportable +supportance +supported +supporter +supporters +supporting +supportor +suppos +supposal +suppose +supposed +supposes +supposest +supposing +supposition +suppress +suppressed +suppresseth +supremacy +supreme +sups +sur +surance +surcease +surd +sure +surecard +surely +surer +surest +sureties +surety +surfeit +surfeited +surfeiter +surfeiting +surfeits +surge +surgeon +surgeons +surgere +surgery +surges +surly +surmis +surmise +surmised +surmises +surmount +surmounted +surmounts +surnam +surname +surnamed +surpasseth +surpassing +surplice +surplus +surpris +surprise +surprised +surrender +surrey +surreys +survey +surveyest +surveying +surveyor +surveyors +surveys +survive +survives +survivor +susan +suspect +suspected +suspecting +suspects +suspend +suspense +suspicion +suspicions +suspicious +suspiration +suspire +sust +sustain +sustaining +sutler +sutton +suum +swabber +swaddling +swag +swagg +swagger +swaggerer +swaggerers +swaggering +swain +swains +swallow +swallowed +swallowing +swallows +swam +swan +swans +sward +sware +swarm +swarming +swart +swarth +swarths +swarthy +swashers +swashing +swath +swathing +swathling +sway +swaying +sways +swear +swearer +swearers +swearest +swearing +swearings +swears +sweat +sweaten +sweating +sweats +sweaty +sweep +sweepers +sweeps +sweet +sweeten +sweetens +sweeter +sweetest +sweetheart +sweeting +sweetly +sweetmeats +sweetness +sweets +swell +swelling +swellings +swells +swelter +sweno +swept +swerve +swerver +swerving +swift +swifter +swiftest +swiftly +swiftness +swill +swills +swim +swimmer +swimmers +swimming +swims +swine +swineherds +swing +swinge +swinish +swinstead +switches +swits +switzers +swol +swoll +swoln +swoon +swooned +swooning +swoons +swoop +swoopstake +swor +sword +sworder +swords +swore +sworn +swounded +swounds +swum +swung +sy +sycamore +sycorax +sylla +syllable +syllables +syllogism +symbols +sympathise +sympathiz +sympathize +sympathized +sympathy +synagogue +synod +synods +syracuse +syracusian +syracusians +syria +syrups +t +ta +taber +table +tabled +tables +tablet +tabor +taborer +tabors +tabourines +taciturnity +tack +tackle +tackled +tackles +tackling +tacklings +taddle +tadpole +taffeta +taffety +tag +tagrag +tah +tail +tailor +tailors +tails +taint +tainted +tainting +taints +tainture +tak +take +taken +taker +takes +takest +taketh +taking +tal +talbot +talbotites +talbots +tale +talent +talents +taleporter +tales +talk +talked +talker +talkers +talkest +talking +talks +tall +taller +tallest +tallies +tallow +tally +talons +tam +tambourines +tame +tamed +tamely +tameness +tamer +tames +taming +tamora +tamworth +tan +tang +tangle +tangled +tank +tanlings +tann +tanned +tanner +tanquam +tanta +tantaene +tap +tape +taper +tapers +tapestries +tapestry +taphouse +tapp +tapster +tapsters +tar +tardied +tardily +tardiness +tardy +tarentum +targe +targes +target +targets +tarpeian +tarquin +tarquins +tarr +tarre +tarriance +tarried +tarries +tarry +tarrying +tart +tartar +tartars +tartly +tartness +task +tasker +tasking +tasks +tassel +taste +tasted +tastes +tasting +tatt +tatter +tattered +tatters +tattle +tattling +tattlings +taught +taunt +taunted +taunting +tauntingly +taunts +taurus +tavern +taverns +tavy +tawdry +tawny +tax +taxation +taxations +taxes +taxing +tc +te +teach +teacher +teachers +teaches +teachest +teacheth +teaching +team +tear +tearful +tearing +tears +tearsheet +teat +tedious +tediously +tediousness +teem +teeming +teems +teen +teeth +teipsum +telamon +telamonius +tell +teller +telling +tells +tellus +temp +temper +temperality +temperance +temperate +temperately +tempers +tempest +tempests +tempestuous +temple +temples +temporal +temporary +temporiz +temporize +temporizer +temps +tempt +temptation +temptations +tempted +tempter +tempters +tempteth +tempting +tempts +ten +tenable +tenant +tenantius +tenantless +tenants +tench +tend +tendance +tended +tender +tendered +tenderly +tenderness +tenders +tending +tends +tenedos +tenement +tenements +tenfold +tennis +tenour +tenours +tens +tent +tented +tenth +tenths +tents +tenure +tenures +tercel +tereus +term +termagant +termed +terminations +termless +terms +terra +terrace +terram +terras +terre +terrene +terrestrial +terrible +terribly +territories +territory +terror +terrors +tertian +tertio +test +testament +tested +tester +testern +testify +testimonied +testimonies +testimony +testiness +testril +testy +tetchy +tether +tetter +tevil +tewksbury +text +tgv +th +thaes +thames +than +thane +thanes +thank +thanked +thankful +thankfully +thankfulness +thanking +thankings +thankless +thanks +thanksgiving +thasos +that +thatch +thaw +thawing +thaws +the +theatre +theban +thebes +thee +theft +thefts +thein +their +theirs +theise +them +theme +themes +themselves +then +thence +thenceforth +theoric +there +thereabout +thereabouts +thereafter +thereat +thereby +therefore +therein +thereof +thereon +thereto +thereunto +thereupon +therewith +therewithal +thersites +these +theseus +thessalian +thessaly +thetis +thews +they +thick +thicken +thickens +thicker +thickest +thicket +thickskin +thief +thievery +thieves +thievish +thigh +thighs +thimble +thimbles +thin +thine +thing +things +think +thinkest +thinking +thinkings +thinks +thinkst +thinly +third +thirdly +thirds +thirst +thirsting +thirsts +thirsty +thirteen +thirties +thirtieth +thirty +this +thisby +thisne +thistle +thistles +thither +thitherward +thoas +thomas +thorn +thorns +thorny +thorough +thoroughly +those +thou +though +thought +thoughtful +thoughts +thousand +thousands +thracian +thraldom +thrall +thralled +thralls +thrash +thrasonical +thread +threadbare +threaden +threading +threat +threaten +threatening +threatens +threatest +threats +three +threefold +threepence +threepile +threes +threescore +thresher +threshold +threw +thrice +thrift +thriftless +thrifts +thrifty +thrill +thrilling +thrills +thrive +thrived +thrivers +thrives +thriving +throat +throats +throbbing +throbs +throca +throe +throes +thromuldo +thron +throne +throned +thrones +throng +thronging +throngs +throstle +throttle +through +throughfare +throughfares +throughly +throughout +throw +thrower +throwest +throwing +thrown +throws +thrum +thrumm +thrush +thrust +thrusteth +thrusting +thrusts +thumb +thumbs +thump +thund +thunder +thunderbolt +thunderbolts +thunderer +thunders +thunderstone +thunderstroke +thurio +thursday +thus +thwack +thwart +thwarted +thwarting +thwartings +thy +thyme +thymus +thyreus +thyself +ti +tib +tiber +tiberio +tibey +ticed +tick +tickl +tickle +tickled +tickles +tickling +ticklish +tiddle +tide +tides +tidings +tidy +tie +tied +ties +tiff +tiger +tigers +tight +tightly +tike +til +tile +till +tillage +tilly +tilt +tilter +tilth +tilting +tilts +tiltyard +tim +timandra +timber +time +timeless +timelier +timely +times +timon +timor +timorous +timorously +tinct +tincture +tinctures +tinder +tingling +tinker +tinkers +tinsel +tiny +tip +tipp +tippling +tips +tipsy +tiptoe +tir +tire +tired +tires +tirest +tiring +tirra +tirrits +tis +tish +tisick +tissue +titan +titania +tithe +tithed +tithing +titinius +title +titled +titleless +titles +tittle +tittles +titular +titus +tn +to +toad +toads +toadstool +toast +toasted +toasting +toasts +toaze +toby +tock +tod +today +todpole +tods +toe +toes +tofore +toge +toged +together +toil +toiled +toiling +toils +token +tokens +told +toledo +tolerable +toll +tolling +tom +tomb +tombe +tombed +tombless +tomboys +tombs +tomorrow +tomyris +ton +tongs +tongu +tongue +tongued +tongueless +tongues +tonight +too +took +tool +tools +tooth +toothache +toothpick +toothpicker +top +topas +topful +topgallant +topless +topmast +topp +topping +topple +topples +tops +topsail +topsy +torch +torchbearer +torchbearers +torcher +torches +torchlight +tore +torment +tormenta +tormente +tormented +tormenting +tormentors +torments +torn +torrent +tortive +tortoise +tortur +torture +tortured +torturer +torturers +tortures +torturest +torturing +toryne +toss +tossed +tosseth +tossing +tot +total +totally +tott +tottered +totters +tou +touch +touched +touches +toucheth +touching +touchstone +tough +tougher +toughness +touraine +tournaments +tours +tous +tout +touze +tow +toward +towardly +towards +tower +towering +towers +town +towns +township +townsman +townsmen +towton +toy +toys +trace +traces +track +tract +tractable +trade +traded +traders +trades +tradesman +tradesmen +trading +tradition +traditional +traduc +traduced +traducement +traffic +traffickers +traffics +tragedian +tragedians +tragedies +tragedy +tragic +tragical +trail +train +trained +training +trains +trait +traitor +traitorly +traitorous +traitorously +traitors +traitress +traject +trammel +trample +trampled +trampling +tranc +trance +tranio +tranquil +tranquillity +transcendence +transcends +transferred +transfigur +transfix +transform +transformation +transformations +transformed +transgress +transgresses +transgressing +transgression +translate +translated +translates +translation +transmigrates +transmutation +transparent +transport +transportance +transported +transporting +transports +transpose +transshape +trap +trapp +trappings +traps +trash +travail +travails +travel +traveler +traveling +travell +travelled +traveller +travellers +travellest +travelling +travels +travers +traverse +tray +treacherous +treacherously +treachers +treachery +tread +treading +treads +treason +treasonable +treasonous +treasons +treasure +treasurer +treasures +treasuries +treasury +treat +treaties +treatise +treats +treaty +treble +trebled +trebles +trebonius +tree +trees +tremble +trembled +trembles +tremblest +trembling +tremblingly +tremor +trempling +trench +trenchant +trenched +trencher +trenchering +trencherman +trenchers +trenches +trenching +trent +tres +trespass +trespasses +tressel +tresses +treys +trial +trials +trib +tribe +tribes +tribulation +tribunal +tribune +tribunes +tributaries +tributary +tribute +tributes +trice +trick +tricking +trickling +tricks +tricksy +trident +tried +trier +trifle +trifled +trifler +trifles +trifling +trigon +trill +trim +trimly +trimm +trimmed +trimming +trims +trinculo +trinculos +trinkets +trip +tripartite +tripe +triple +triplex +tripoli +tripolis +tripp +tripping +trippingly +trips +tristful +triton +triumph +triumphant +triumphantly +triumpher +triumphers +triumphing +triumphs +triumvir +triumvirate +triumvirs +triumviry +trivial +troat +trod +trodden +troiant +troien +troilus +troiluses +trojan +trojans +troll +tromperies +trompet +troop +trooping +troops +trop +trophies +trophy +tropically +trot +troth +trothed +troths +trots +trotting +trouble +troubled +troubler +troubles +troublesome +troublest +troublous +trough +trout +trouts +trovato +trow +trowel +trowest +troy +troyan +troyans +truant +truce +truckle +trudge +true +trueborn +truepenny +truer +truest +truie +trull +trulls +truly +trump +trumpery +trumpet +trumpeter +trumpeters +trumpets +truncheon +truncheoners +trundle +trunk +trunks +trust +trusted +truster +trusters +trusting +trusts +trusty +truth +truths +try +ts +tu +tuae +tub +tubal +tubs +tuck +tucket +tuesday +tuft +tufts +tug +tugg +tugging +tuition +tullus +tully +tumble +tumbled +tumbler +tumbling +tumult +tumultuous +tun +tune +tuneable +tuned +tuners +tunes +tunis +tuns +tupping +turban +turbans +turbulence +turbulent +turd +turf +turfy +turk +turkey +turkeys +turkish +turks +turlygod +turmoil +turmoiled +turn +turnbull +turncoat +turncoats +turned +turneth +turning +turnips +turns +turph +turpitude +turquoise +turret +turrets +turtle +turtles +turvy +tuscan +tush +tut +tutor +tutored +tutors +tutto +twain +twang +twangling +twas +tway +tweaks +tween +twelfth +twelve +twelvemonth +twentieth +twenty +twere +twice +twig +twiggen +twigs +twilight +twill +twilled +twin +twine +twink +twinkle +twinkled +twinkling +twinn +twins +twire +twist +twisted +twit +twits +twitting +twixt +two +twofold +twopence +twopences +twos +twould +tyb +tybalt +tybalts +tyburn +tying +tyke +tymbria +type +types +typhon +tyrannical +tyrannically +tyrannize +tyrannous +tyranny +tyrant +tyrants +tyrian +tyrrel +u +ubique +udders +udge +uds +uglier +ugliest +ugly +ulcer +ulcerous +ulysses +um +umber +umbra +umbrage +umfrevile +umpire +umpires +un +unable +unaccommodated +unaccompanied +unaccustom +unaching +unacquainted +unactive +unadvis +unadvised +unadvisedly +unagreeable +unanel +unanswer +unappeas +unapproved +unapt +unaptness +unarm +unarmed +unarms +unassail +unassailable +unattainted +unattempted +unattended +unauspicious +unauthorized +unavoided +unawares +unback +unbak +unbanded +unbar +unbarb +unbashful +unbated +unbatter +unbecoming +unbefitting +unbegot +unbegotten +unbelieved +unbend +unbent +unbewail +unbid +unbidden +unbind +unbinds +unbitted +unbless +unblest +unbloodied +unblown +unbodied +unbolt +unbolted +unbonneted +unbookish +unborn +unbosom +unbound +unbounded +unbow +unbowed +unbrac +unbraced +unbraided +unbreathed +unbred +unbreech +unbridled +unbroke +unbruis +unbruised +unbuckle +unbuckles +unbuckling +unbuild +unburden +unburdens +unburied +unburnt +unburthen +unbutton +unbuttoning +uncapable +uncape +uncase +uncasing +uncaught +uncertain +uncertainty +unchain +unchanging +uncharge +uncharged +uncharitably +unchary +unchaste +uncheck +unchilded +uncivil +unclaim +unclasp +uncle +unclean +uncleanliness +uncleanly +uncleanness +uncles +unclew +unclog +uncoined +uncolted +uncomeliness +uncomfortable +uncompassionate +uncomprehensive +unconfinable +unconfirm +unconfirmed +unconquer +unconquered +unconsidered +unconstant +unconstrain +unconstrained +uncontemn +uncontroll +uncorrected +uncounted +uncouple +uncourteous +uncouth +uncover +uncovered +uncropped +uncross +uncrown +unction +unctuous +uncuckolded +uncurable +uncurbable +uncurbed +uncurls +uncurrent +uncurse +undaunted +undeaf +undeck +undeeded +under +underbearing +underborne +undercrest +underfoot +undergo +undergoes +undergoing +undergone +underground +underhand +underlings +undermine +underminers +underneath +underprizing +underprop +understand +understandeth +understanding +understandings +understands +understood +underta +undertake +undertakeing +undertaker +undertakes +undertaking +undertakings +undertook +undervalu +undervalued +underwent +underwrit +underwrite +undescried +undeserved +undeserver +undeservers +undeserving +undetermin +undid +undinted +undiscernible +undiscover +undishonoured +undispos +undistinguishable +undistinguished +undividable +undivided +undivulged +undo +undoes +undoing +undone +undoubted +undoubtedly +undream +undress +undressed +undrown +unduteous +undutiful +une +uneared +unearned +unearthly +uneasines +uneasy +uneath +uneducated +uneffectual +unelected +unequal +uneven +unexamin +unexecuted +unexpected +unexperienc +unexperient +unexpressive +unfair +unfaithful +unfallible +unfam +unfashionable +unfasten +unfather +unfathered +unfed +unfeed +unfeeling +unfeigned +unfeignedly +unfellowed +unfelt +unfenced +unfilial +unfill +unfinish +unfirm +unfit +unfitness +unfix +unfledg +unfold +unfolded +unfoldeth +unfolding +unfolds +unfool +unforc +unforced +unforfeited +unfortified +unfortunate +unfought +unfrequented +unfriended +unfurnish +ungain +ungalled +ungart +ungarter +ungenitur +ungentle +ungentleness +ungently +ungird +ungodly +ungor +ungot +ungotten +ungovern +ungracious +ungrateful +ungravely +ungrown +unguarded +unguem +unguided +unhack +unhair +unhallow +unhallowed +unhand +unhandled +unhandsome +unhang +unhappied +unhappily +unhappiness +unhappy +unhardened +unharm +unhatch +unheard +unhearts +unheedful +unheedfully +unheedy +unhelpful +unhidden +unholy +unhop +unhopefullest +unhorse +unhospitable +unhous +unhoused +unhurtful +unicorn +unicorns +unimproved +uninhabitable +uninhabited +unintelligent +union +unions +unite +united +unity +universal +universe +universities +university +unjointed +unjust +unjustice +unjustly +unkennel +unkept +unkind +unkindest +unkindly +unkindness +unking +unkinglike +unkiss +unknit +unknowing +unknown +unlace +unlaid +unlawful +unlawfully +unlearn +unlearned +unless +unlesson +unletter +unlettered +unlick +unlike +unlikely +unlimited +unlineal +unlink +unload +unloaded +unloading +unloads +unlock +unlocks +unlook +unlooked +unloos +unloose +unlov +unloving +unluckily +unlucky +unmade +unmake +unmanly +unmann +unmanner +unmannerd +unmannerly +unmarried +unmask +unmasked +unmasking +unmasks +unmast +unmatch +unmatchable +unmatched +unmeasurable +unmeet +unmellowed +unmerciful +unmeritable +unmeriting +unminded +unmindfull +unmingled +unmitigable +unmitigated +unmix +unmoan +unmov +unmoved +unmoving +unmuffles +unmuffling +unmusical +unmuzzle +unmuzzled +unnatural +unnaturally +unnaturalness +unnecessarily +unnecessary +unneighbourly +unnerved +unnoble +unnoted +unnumb +unnumber +unowed +unpack +unpaid +unparagon +unparallel +unpartial +unpath +unpaved +unpay +unpeaceable +unpeg +unpeople +unpeopled +unperfect +unperfectness +unpick +unpin +unpink +unpitied +unpitifully +unplagu +unplausive +unpleas +unpleasant +unpleasing +unpolicied +unpolish +unpolished +unpolluted +unpossess +unpossessing +unpossible +unpractis +unpregnant +unpremeditated +unprepar +unprepared +unpress +unprevailing +unprevented +unpriz +unprizable +unprofitable +unprofited +unproper +unproperly +unproportion +unprovide +unprovided +unprovident +unprovokes +unprun +unpruned +unpublish +unpurged +unpurpos +unqualitied +unqueen +unquestion +unquestionable +unquiet +unquietly +unquietness +unraised +unrak +unread +unready +unreal +unreasonable +unreasonably +unreclaimed +unreconciled +unreconciliable +unrecounted +unrecuring +unregarded +unregist +unrelenting +unremovable +unremovably +unreprievable +unresolv +unrespected +unrespective +unrest +unrestor +unrestrained +unreveng +unreverend +unreverent +unrevers +unrewarded +unrighteous +unrightful +unripe +unripp +unrivall +unroll +unroof +unroosted +unroot +unrough +unruly +unsafe +unsaluted +unsanctified +unsatisfied +unsavoury +unsay +unscalable +unscann +unscarr +unschool +unscorch +unscour +unscratch +unseal +unseam +unsearch +unseason +unseasonable +unseasonably +unseasoned +unseconded +unsecret +unseduc +unseeing +unseeming +unseemly +unseen +unseminar +unseparable +unserviceable +unset +unsettle +unsettled +unsever +unsex +unshak +unshaked +unshaken +unshaped +unshapes +unsheath +unsheathe +unshorn +unshout +unshown +unshrinking +unshrubb +unshunn +unshunnable +unsifted +unsightly +unsinew +unsisting +unskilful +unskilfully +unskillful +unslipping +unsmirched +unsoil +unsolicited +unsorted +unsought +unsound +unsounded +unspeak +unspeakable +unspeaking +unsphere +unspoke +unspoken +unspotted +unsquar +unstable +unstaid +unstain +unstained +unstanched +unstate +unsteadfast +unstooping +unstringed +unstuff +unsubstantial +unsuitable +unsuiting +unsullied +unsunn +unsur +unsure +unsuspected +unsway +unswayable +unswayed +unswear +unswept +unsworn +untainted +untalk +untangle +untangled +untasted +untaught +untempering +untender +untent +untented +unthankful +unthankfulness +unthink +unthought +unthread +unthrift +unthrifts +unthrifty +untie +untied +until +untimber +untimely +untir +untirable +untired +untitled +unto +untold +untouch +untoward +untowardly +untraded +untrain +untrained +untread +untreasur +untried +untrimmed +untrod +untrodden +untroubled +untrue +untrussing +untruth +untruths +untucked +untun +untune +untuneable +untutor +untutored +untwine +unurg +unus +unused +unusual +unvalued +unvanquish +unvarnish +unveil +unveiling +unvenerable +unvex +unviolated +unvirtuous +unvisited +unvulnerable +unwares +unwarily +unwash +unwatch +unwearied +unwed +unwedgeable +unweeded +unweighed +unweighing +unwelcome +unwept +unwhipp +unwholesome +unwieldy +unwilling +unwillingly +unwillingness +unwind +unwiped +unwise +unwisely +unwish +unwished +unwitted +unwittingly +unwonted +unwooed +unworthier +unworthiest +unworthily +unworthiness +unworthy +unwrung +unyok +unyoke +up +upbraid +upbraided +upbraidings +upbraids +uphoarded +uphold +upholdeth +upholding +upholds +uplift +uplifted +upmost +upon +upper +uprear +upreared +upright +uprighteously +uprightness +uprise +uprising +uproar +uproars +uprous +upshoot +upshot +upside +upspring +upstairs +upstart +upturned +upward +upwards +urchin +urchinfield +urchins +urg +urge +urged +urgent +urges +urgest +urging +urinal +urinals +urine +urn +urns +urs +ursa +ursley +ursula +urswick +us +usage +usance +usances +use +used +useful +useless +user +uses +usest +useth +usher +ushered +ushering +ushers +using +usual +usually +usurer +usurers +usuries +usuring +usurp +usurpation +usurped +usurper +usurpers +usurping +usurpingly +usurps +usury +ut +utensil +utensils +utility +utmost +utt +utter +utterance +uttered +uttereth +uttering +utterly +uttermost +utters +uy +v +va +vacancy +vacant +vacation +vade +vagabond +vagabonds +vagram +vagrom +vail +vailed +vailing +vaillant +vain +vainer +vainglory +vainly +vainness +vais +valanc +valance +vale +valence +valentine +valentinus +valentio +valeria +valerius +vales +valiant +valiantly +valiantness +validity +vallant +valley +valleys +vally +valor +valorous +valorously +valour +valu +valuation +value +valued +valueless +values +valuing +vane +vanish +vanished +vanishes +vanishest +vanishing +vanities +vanity +vanquish +vanquished +vanquisher +vanquishest +vanquisheth +vant +vantage +vantages +vantbrace +vapians +vapor +vaporous +vapour +vapours +vara +variable +variance +variation +variations +varied +variest +variety +varld +varlet +varletry +varlets +varletto +varnish +varrius +varro +vary +varying +vassal +vassalage +vassals +vast +vastidity +vasty +vat +vater +vaudemont +vaughan +vault +vaultages +vaulted +vaulting +vaults +vaulty +vaumond +vaunt +vaunted +vaunter +vaunting +vauntingly +vaunts +vauvado +vaux +vaward +ve +veal +vede +vehemence +vehemency +vehement +vehor +veil +veiled +veiling +vein +veins +vell +velure +velutus +velvet +vendible +venerable +venereal +venetia +venetian +venetians +veneys +venge +vengeance +vengeances +vengeful +veni +venial +venice +venison +venit +venom +venomous +venomously +vent +ventages +vented +ventidius +ventricle +vents +ventur +venture +ventured +ventures +venturing +venturous +venue +venus +venuto +ver +verb +verba +verbal +verbatim +verbosity +verdict +verdun +verdure +vere +verefore +verg +verge +vergers +verges +verier +veriest +verified +verify +verily +veritable +verite +verities +verity +vermilion +vermin +vernon +verona +veronesa +versal +verse +verses +versing +vert +very +vesper +vessel +vessels +vestal +vestments +vesture +vetch +vetches +veux +vex +vexation +vexations +vexed +vexes +vexest +vexeth +vexing +vi +via +vial +vials +viand +viands +vic +vicar +vice +vicegerent +vicentio +viceroy +viceroys +vices +vici +vicious +viciousness +vict +victims +victor +victoress +victories +victorious +victors +victory +victual +victuall +victuals +videlicet +video +vides +videsne +vidi +vie +vied +vienna +view +viewest +vieweth +viewing +viewless +views +vigil +vigilance +vigilant +vigitant +vigour +vii +viii +vile +vilely +vileness +viler +vilest +vill +village +villager +villagery +villages +villain +villainies +villainous +villainously +villains +villainy +villanies +villanous +villany +villiago +villian +villianda +villians +vinaigre +vincentio +vincere +vindicative +vine +vinegar +vines +vineyard +vineyards +vint +vintner +viol +viola +violate +violated +violates +violation +violator +violence +violent +violenta +violenteth +violently +violet +violets +viper +viperous +vipers +vir +virgilia +virgin +virginal +virginalling +virginity +virginius +virgins +virgo +virtue +virtues +virtuous +virtuously +visag +visage +visages +visard +viscount +visible +visibly +vision +visions +visit +visitation +visitations +visited +visiting +visitings +visitor +visitors +visits +visor +vita +vitae +vital +vitement +vitruvio +vitx +viva +vivant +vive +vixen +viz +vizaments +vizard +vizarded +vizards +vizor +vlouting +vocation +vocativo +vocatur +voce +voic +voice +voices +void +voided +voiding +voke +volable +volant +volivorco +volley +volquessen +volsce +volsces +volscian +volscians +volt +voltemand +volubility +voluble +volume +volumes +volumnia +volumnius +voluntaries +voluntary +voluptuously +voluptuousness +vomissement +vomit +vomits +vor +vore +vortnight +vot +votaries +votarist +votarists +votary +votre +vouch +voucher +vouchers +vouches +vouching +vouchsaf +vouchsafe +vouchsafed +vouchsafes +vouchsafing +voudrais +vour +vous +voutsafe +vow +vowed +vowel +vowels +vowing +vows +vox +voyage +voyages +vraiment +vulcan +vulgar +vulgarly +vulgars +vulgo +vulnerable +vulture +vultures +vurther +w +wad +waddled +wade +waded +wafer +waft +waftage +wafting +wafts +wag +wage +wager +wagers +wages +wagging +waggish +waggling +waggon +waggoner +wagon +wagoner +wags +wagtail +wail +wailful +wailing +wails +wain +wainropes +wainscot +waist +wait +waited +waiter +waiteth +waiting +waits +wak +wake +waked +wakefield +waken +wakened +wakes +wakest +waking +wales +walk +walked +walking +walks +wall +walled +wallet +wallets +wallon +walloon +wallow +walls +walnut +walter +wan +wand +wander +wanderer +wanderers +wandering +wanders +wands +wane +waned +wanes +waning +wann +want +wanted +wanteth +wanting +wanton +wantonly +wantonness +wantons +wants +wappen +war +warble +warbling +ward +warded +warden +warder +warders +wardrobe +wardrop +wards +ware +wares +warily +warkworth +warlike +warm +warmed +warmer +warming +warms +warmth +warn +warned +warning +warnings +warns +warp +warped +warr +warrant +warranted +warranteth +warrantise +warrantize +warrants +warranty +warren +warrener +warring +warrior +warriors +wars +wart +warwick +warwickshire +wary +was +wash +washed +washer +washes +washford +washing +wasp +waspish +wasps +wassail +wassails +wast +waste +wasted +wasteful +wasters +wastes +wasting +wat +watch +watched +watchers +watches +watchful +watching +watchings +watchman +watchmen +watchword +water +waterdrops +watered +waterfly +waterford +watering +waterish +waterpots +waterrugs +waters +waterton +watery +wav +wave +waved +waver +waverer +wavering +waves +waving +waw +wawl +wax +waxed +waxen +waxes +waxing +way +waylaid +waylay +ways +wayward +waywarder +waywardness +we +weak +weaken +weakens +weaker +weakest +weakling +weakly +weakness +weal +wealsmen +wealth +wealthiest +wealthily +wealthy +wealtlly +wean +weapon +weapons +wear +wearer +wearers +wearied +wearies +weariest +wearily +weariness +wearing +wearisome +wears +weary +weasel +weather +weathercock +weathers +weav +weave +weaver +weavers +weaves +weaving +web +wed +wedded +wedding +wedg +wedged +wedges +wedlock +wednesday +weed +weeded +weeder +weeding +weeds +weedy +week +weeke +weekly +weeks +ween +weening +weep +weeper +weeping +weepingly +weepings +weeps +weet +weigh +weighed +weighing +weighs +weight +weightier +weightless +weights +weighty +weird +welcom +welcome +welcomer +welcomes +welcomest +welfare +welkin +well +wells +welsh +welshman +welshmen +welshwomen +wench +wenches +wenching +wend +went +wept +weraday +were +wert +west +western +westminster +westmoreland +westward +wet +wether +wetting +wezand +whale +whales +wharf +wharfs +what +whate +whatever +whatsoe +whatsoever +whatsome +whe +wheat +wheaten +wheel +wheeling +wheels +wheer +wheeson +wheezing +whelk +whelks +whelm +whelp +whelped +whelps +when +whenas +whence +whencesoever +whene +whenever +whensoever +where +whereabout +whereas +whereat +whereby +wherefore +wherein +whereinto +whereof +whereon +whereout +whereso +wheresoe +wheresoever +wheresome +whereto +whereuntil +whereunto +whereupon +wherever +wherewith +wherewithal +whet +whether +whetstone +whetted +whew +whey +which +whiff +whiffler +while +whiles +whilst +whin +whine +whined +whinid +whining +whip +whipp +whippers +whipping +whips +whipster +whipstock +whipt +whirl +whirled +whirligig +whirling +whirlpool +whirls +whirlwind +whirlwinds +whisp +whisper +whispering +whisperings +whispers +whist +whistle +whistles +whistling +whit +white +whitehall +whitely +whiteness +whiter +whites +whitest +whither +whiting +whitmore +whitsters +whitsun +whittle +whizzing +who +whoa +whoe +whoever +whole +wholesom +wholesome +wholly +whom +whoobub +whoop +whooping +whor +whore +whoremaster +whoremasterly +whoremonger +whores +whoreson +whoresons +whoring +whorish +whose +whoso +whosoe +whosoever +why +wi +wick +wicked +wickednes +wickedness +wicket +wicky +wid +wide +widens +wider +widow +widowed +widower +widowhood +widows +wield +wife +wight +wights +wild +wildcats +wilder +wilderness +wildest +wildfire +wildly +wildness +wilds +wiles +wilful +wilfull +wilfully +wilfulnes +wilfulness +will +willed +willers +willeth +william +williams +willing +willingly +willingness +willoughby +willow +wills +wilt +wiltshire +wimpled +win +wince +winch +winchester +wincot +wind +winded +windgalls +winding +windlasses +windmill +window +windows +windpipe +winds +windsor +windy +wine +wing +winged +wingfield +wingham +wings +wink +winking +winks +winner +winners +winning +winnow +winnowed +winnows +wins +winter +winterly +winters +wip +wipe +wiped +wipes +wiping +wire +wires +wiry +wisdom +wisdoms +wise +wiselier +wisely +wiser +wisest +wish +wished +wisher +wishers +wishes +wishest +wisheth +wishful +wishing +wishtly +wisp +wist +wit +witb +witch +witchcraft +witches +witching +with +withal +withdraw +withdrawing +withdrawn +withdrew +wither +withered +withering +withers +withheld +withhold +withholds +within +withold +without +withstand +withstanding +withstood +witless +witness +witnesses +witnesseth +witnessing +wits +witted +wittenberg +wittiest +wittily +witting +wittingly +wittol +wittolly +witty +wiv +wive +wived +wives +wiving +wizard +wizards +wo +woe +woeful +woefull +woefullest +woes +woful +wolf +wolfish +wolsey +wolves +wolvish +woman +womanhood +womanish +womankind +womanly +womb +wombs +womby +women +won +woncot +wond +wonder +wondered +wonderful +wonderfully +wondering +wonders +wondrous +wondrously +wont +wonted +woo +wood +woodbine +woodcock +woodcocks +wooden +woodland +woodman +woodmonger +woods +woodstock +woodville +wooed +wooer +wooers +wooes +woof +wooing +wooingly +wool +woollen +woolly +woolsack +woolsey +woolward +woos +wor +worcester +word +words +wore +worins +work +workers +working +workings +workman +workmanly +workmanship +workmen +works +worky +world +worldlings +worldly +worlds +worm +worms +wormwood +wormy +worn +worried +worries +worry +worrying +worse +worser +worship +worshipful +worshipfully +worshipp +worshipper +worshippers +worshippest +worships +worst +worsted +wort +worth +worthied +worthier +worthies +worthiest +worthily +worthiness +worthless +worths +worthy +worts +wot +wots +wotting +wouid +would +wouldest +wouldst +wound +wounded +wounding +woundings +woundless +wounds +wouns +woven +wow +wrack +wrackful +wrangle +wrangler +wranglers +wrangling +wrap +wrapp +wraps +wrapt +wrath +wrathful +wrathfully +wraths +wreak +wreakful +wreaks +wreath +wreathed +wreathen +wreaths +wreck +wrecked +wrecks +wren +wrench +wrenching +wrens +wrest +wrested +wresting +wrestle +wrestled +wrestler +wrestling +wretch +wretchcd +wretched +wretchedness +wretches +wring +wringer +wringing +wrings +wrinkle +wrinkled +wrinkles +wrist +wrists +writ +write +writer +writers +writes +writhled +writing +writings +writs +written +wrong +wronged +wronger +wrongful +wrongfully +wronging +wrongly +wrongs +wronk +wrote +wroth +wrought +wrung +wry +wrying +wt +wul +wye +x +xanthippe +xi +xii +xiii +xiv +xv +y +yard +yards +yare +yarely +yarn +yaughan +yaw +yawn +yawning +ycleped +ycliped +ye +yea +yead +year +yearly +yearn +yearns +years +yeas +yeast +yedward +yell +yellow +yellowed +yellowing +yellowness +yellows +yells +yelping +yeoman +yeomen +yerk +yes +yesterday +yesterdays +yesternight +yesty +yet +yew +yicld +yield +yielded +yielder +yielders +yielding +yields +yok +yoke +yoked +yokefellow +yokes +yoketh +yon +yond +yonder +yongrey +yore +yorick +york +yorkists +yorks +yorkshire +you +young +younger +youngest +youngling +younglings +youngly +younker +your +yours +yourself +yourselves +youth +youthful +youths +youtli +zanies +zany +zeal +zealous +zeals +zed +zenelophon +zenith +zephyrs +zir +zo +zodiac +zodiacs +zone +zounds +zwagger diff --git a/basis/prettyprint/prettyprint-tests.factor b/basis/prettyprint/prettyprint-tests.factor index 648c707967..b1239086d7 100644 --- a/basis/prettyprint/prettyprint-tests.factor +++ b/basis/prettyprint/prettyprint-tests.factor @@ -3,7 +3,7 @@ kernel math namespaces parser prettyprint prettyprint.config prettyprint.sections sequences tools.test vectors words effects splitting generic.standard prettyprint.private continuations generic compiler.units tools.walker eval -accessors make ; +accessors make vocabs.parser ; IN: prettyprint.tests [ "4" ] [ 4 unparse ] unit-test diff --git a/basis/prettyprint/prettyprint.factor b/basis/prettyprint/prettyprint.factor index 6b49c4a35a..b3800babe8 100644 --- a/basis/prettyprint/prettyprint.factor +++ b/basis/prettyprint/prettyprint.factor @@ -2,13 +2,13 @@ ! See http://factorcode.org/license.txt for BSD license. USING: arrays generic generic.standard assocs io kernel math namespaces make sequences strings io.styles io.streams.string -vectors words prettyprint.backend prettyprint.custom +vectors words words.symbol prettyprint.backend prettyprint.custom prettyprint.sections prettyprint.config sorting splitting grouping math.parser vocabs definitions effects classes.builtin classes.tuple io.pathnames classes continuations hashtables classes.mixin classes.union classes.intersection classes.predicate classes.singleton combinators quotations sets -accessors colors parser summary ; +accessors colors parser summary vocabs.parser ; IN: prettyprint : make-pprint ( obj quot -- block in use ) @@ -357,12 +357,12 @@ M: builtin-class see-class* ] when drop ; M: word see - dup see-class - dup class? over symbol? not and [ - nl - ] when - dup [ class? ] [ symbol? ] bi and - [ drop ] [ call-next-method ] if ; + [ see-class ] + [ [ class? ] [ symbol? not ] bi and [ nl ] when ] + [ + dup [ class? ] [ symbol? ] bi and + [ drop ] [ call-next-method ] if + ] tri ; : see-all ( seq -- ) natural-sort [ nl ] [ see ] interleave ; diff --git a/basis/qualified/authors.txt b/basis/qualified/authors.txt deleted file mode 100644 index f990dd0ed2..0000000000 --- a/basis/qualified/authors.txt +++ /dev/null @@ -1 +0,0 @@ -Daniel Ehrenberg diff --git a/basis/qualified/qualified-docs.factor b/basis/qualified/qualified-docs.factor deleted file mode 100644 index 828d811b46..0000000000 --- a/basis/qualified/qualified-docs.factor +++ /dev/null @@ -1,55 +0,0 @@ -USING: help.markup help.syntax ; -IN: qualified - -HELP: QUALIFIED: -{ $syntax "QUALIFIED: vocab" } -{ $description "Similar to " { $link POSTPONE: USE: } " but loads vocabulary with prefix." } -{ $examples { $example - "USING: prettyprint qualified ;" - "QUALIFIED: math" - "1 2 math:+ ." "3" -} } ; - -HELP: QUALIFIED-WITH: -{ $syntax "QUALIFIED-WITH: vocab word-prefix" } -{ $description "Works like " { $link POSTPONE: QUALIFIED: } " but uses " { $snippet "word-prefix" } " as prefix." } -{ $examples { $code - "USING: prettyprint qualified ;" - "QUALIFIED-WITH: math m" - "1 2 m:+ ." - "3" -} } ; - -HELP: FROM: -{ $syntax "FROM: vocab => words ... ;" } -{ $description "Imports " { $snippet "words" } " from " { $snippet "vocab" } "." } -{ $examples { $code - "FROM: math.parser => bin> hex> ; ! imports only bin> and hex>" } } ; - -HELP: EXCLUDE: -{ $syntax "EXCLUDE: vocab => words ... ;" } -{ $description "Imports everything from " { $snippet "vocab" } " excluding " { $snippet "words" } "." } -{ $examples { $code - "EXCLUDE: math.parser => bin> hex> ; ! imports everything but bin> and hex>" } } ; - -HELP: RENAME: -{ $syntax "RENAME: word vocab => newname " } -{ $description "Imports " { $snippet "word" } " from " { $snippet "vocab" } ", but renamed to " { $snippet "newname" } "." } -{ $examples { $example - "USING: prettyprint qualified ;" - "RENAME: + math => -" - "2 3 - ." - "5" -} } ; - -ARTICLE: "qualified" "Qualified word lookup" -"The " { $vocab-link "qualified" } " vocabulary provides a handful of parsing words which give more control over word lookup than is offered by " { $link POSTPONE: USE: } " and " { $link POSTPONE: USING: } "." -$nl -"These words are useful when there is no way to avoid using two vocabularies with identical word names in the same source file." -{ $subsection POSTPONE: QUALIFIED: } -{ $subsection POSTPONE: QUALIFIED-WITH: } -{ $subsection POSTPONE: FROM: } -{ $subsection POSTPONE: EXCLUDE: } -{ $subsection POSTPONE: RENAME: } ; - -ABOUT: "qualified" diff --git a/basis/qualified/qualified-tests.factor b/basis/qualified/qualified-tests.factor deleted file mode 100644 index 78efec4861..0000000000 --- a/basis/qualified/qualified-tests.factor +++ /dev/null @@ -1,33 +0,0 @@ -USING: tools.test qualified eval accessors parser ; -IN: qualified.tests.foo -: x 1 ; -: y 5 ; -IN: qualified.tests.bar -: x 2 ; -: y 4 ; -IN: qualified.tests.baz -: x 3 ; - -QUALIFIED: qualified.tests.foo -QUALIFIED: qualified.tests.bar -[ 1 2 3 ] [ qualified.tests.foo:x qualified.tests.bar:x x ] unit-test - -QUALIFIED-WITH: qualified.tests.bar p -[ 2 ] [ p:x ] unit-test - -RENAME: x qualified.tests.baz => y -[ 3 ] [ y ] unit-test - -FROM: qualified.tests.baz => x ; -[ 3 ] [ x ] unit-test -[ 3 ] [ y ] unit-test - -EXCLUDE: qualified.tests.bar => x ; -[ 3 ] [ x ] unit-test -[ 4 ] [ y ] unit-test - -[ "USE: qualified IN: qualified.tests FROM: qualified.tests => doesnotexist ;" eval ] -[ error>> no-word-error? ] must-fail-with - -[ "USE: qualified IN: qualified.tests RENAME: doesnotexist qualified.tests => blah" eval ] -[ error>> no-word-error? ] must-fail-with diff --git a/basis/qualified/qualified.factor b/basis/qualified/qualified.factor deleted file mode 100644 index 2cd64e90bf..0000000000 --- a/basis/qualified/qualified.factor +++ /dev/null @@ -1,43 +0,0 @@ -! Copyright (C) 2007, 2008 Daniel Ehrenberg. -! See http://factorcode.org/license.txt for BSD license. -USING: kernel sequences assocs hashtables parser lexer -vocabs words namespaces vocabs.loader sets fry ; -IN: qualified - -: define-qualified ( vocab-name prefix-name -- ) - [ load-vocab vocab-words ] [ CHAR: : suffix ] bi* - '[ [ [ _ ] dip append ] dip ] assoc-map - use get push ; - -: QUALIFIED: - #! Syntax: QUALIFIED: vocab - scan dup define-qualified ; parsing - -: QUALIFIED-WITH: - #! Syntax: QUALIFIED-WITH: vocab prefix - scan scan define-qualified ; parsing - -: partial-vocab ( words vocab -- assoc ) - '[ dup _ lookup [ no-word-error ] unless* ] - { } map>assoc ; - -: FROM: - #! Syntax: FROM: vocab => words... ; - scan dup load-vocab drop "=>" expect - ";" parse-tokens swap partial-vocab use get push ; parsing - -: partial-vocab-excluding ( words vocab -- assoc ) - [ load-vocab vocab-words keys swap diff ] keep partial-vocab ; - -: EXCLUDE: - #! Syntax: EXCLUDE: vocab => words ... ; - scan "=>" expect - ";" parse-tokens swap partial-vocab-excluding use get push ; parsing - -: RENAME: - #! Syntax: RENAME: word vocab => newname - scan scan dup load-vocab drop - dupd lookup [ ] [ no-word-error ] ?if - "=>" expect - scan associate use get push ; parsing - diff --git a/basis/qualified/summary.txt b/basis/qualified/summary.txt deleted file mode 100644 index 94b44c6052..0000000000 --- a/basis/qualified/summary.txt +++ /dev/null @@ -1 +0,0 @@ -Qualified naming for vocabularies diff --git a/basis/qualified/tags.txt b/basis/qualified/tags.txt deleted file mode 100644 index f4274299b1..0000000000 --- a/basis/qualified/tags.txt +++ /dev/null @@ -1 +0,0 @@ -extensions diff --git a/basis/random/random.factor b/basis/random/random.factor index 5c93606ab5..554ed5c96a 100755 --- a/basis/random/random.factor +++ b/basis/random/random.factor @@ -2,7 +2,8 @@ ! See http://factorcode.org/license.txt for BSD license. USING: alien.c-types kernel math namespaces sequences io.backend io.binary combinators system vocabs.loader -summary math.bitwise byte-vectors fry byte-arrays ; +summary math.bitwise byte-vectors fry byte-arrays +math.ranges ; IN: random SYMBOL: system-random-generator @@ -51,6 +52,9 @@ PRIVATE> [ length random-integer ] keep nth ] if-empty ; +: randomize ( seq -- seq' ) + dup length 1 (a,b] [ dup random pick exchange ] each ; + : delete-random ( seq -- elt ) [ length random-integer ] keep [ nth ] 2keep delete-nth ; diff --git a/basis/regexp/classes/classes.factor b/basis/regexp/classes/classes.factor index eec0d309b1..4a807fa51b 100644 --- a/basis/regexp/classes/classes.factor +++ b/basis/regexp/classes/classes.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. -USING: accessors kernel math math.order symbols -words regexp.utils unicode.categories combinators.short-circuit ; +USING: accessors kernel math math.order words regexp.utils +unicode.categories combinators.short-circuit ; IN: regexp.classes SINGLETONS: any-char any-char-no-nl diff --git a/basis/regexp/parser/parser.factor b/basis/regexp/parser/parser.factor index 4d8f3ddfbc..25509ec798 100644 --- a/basis/regexp/parser/parser.factor +++ b/basis/regexp/parser/parser.factor @@ -1,8 +1,8 @@ ! Copyright (C) 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. USING: accessors arrays assocs combinators io io.streams.string -kernel math math.parser namespaces qualified sets -quotations sequences splitting symbols vectors math.order +kernel math math.parser namespaces sets +quotations sequences splitting vectors math.order unicode.categories strings regexp.backend regexp.utils unicode.case words locals regexp.classes ; IN: regexp.parser diff --git a/basis/roman/authors.txt b/basis/roman/authors.txt new file mode 100644 index 0000000000..7c1b2f2279 --- /dev/null +++ b/basis/roman/authors.txt @@ -0,0 +1 @@ +Doug Coleman diff --git a/basis/roman/roman-docs.factor b/basis/roman/roman-docs.factor new file mode 100644 index 0000000000..4a8197f064 --- /dev/null +++ b/basis/roman/roman-docs.factor @@ -0,0 +1,120 @@ +! Copyright (C) 2008 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: help.markup help.syntax kernel math ; +IN: roman + +HELP: >roman +{ $values { "n" "an integer" } { "str" "a string" } } +{ $description "Converts a number to its lower-case Roman Numeral equivalent." } +{ $notes "The range for this word is 1-3999, inclusive." } +{ $examples + { $example "USING: io roman ;" + "56 >roman print" + "lvi" + } +} ; + +HELP: >ROMAN +{ $values { "n" "an integer" } { "str" "a string" } } +{ $description "Converts a number to its upper-case Roman numeral equivalent." } +{ $notes "The range for this word is 1-3999, inclusive." } +{ $examples + { $example "USING: io roman ;" + "56 >ROMAN print" + "LVI" + } +} ; + +HELP: roman> +{ $values { "str" "a string" } { "n" "an integer" } } +{ $description "Converts a Roman numeral to an integer." } +{ $notes "The range for this word is i-mmmcmxcix, inclusive." } +{ $examples + { $example "USING: prettyprint roman ;" + "\"lvi\" roman> ." + "56" + } +} ; + +{ >roman >ROMAN roman> } related-words + +HELP: roman+ +{ $values { "str1" "a string" } { "str2" "a string" } { "str3" "a string" } } +{ $description "Adds two Roman numerals." } +{ $examples + { $example "USING: io roman ;" + "\"v\" \"v\" roman+ print" + "x" + } +} ; + +HELP: roman- +{ $values { "str1" "a string" } { "str2" "a string" } { "str3" "a string" } } +{ $description "Subtracts two Roman numerals." } +{ $examples + { $example "USING: io roman ;" + "\"x\" \"v\" roman- print" + "v" + } +} ; + +{ roman+ roman- } related-words + +HELP: roman* +{ $values { "str1" "a string" } { "str2" "a string" } { "str3" "a string" } } +{ $description "Multiplies two Roman numerals." } +{ $examples + { $example "USING: io roman ;" + "\"ii\" \"iii\" roman* print" + "vi" + } +} ; + +HELP: roman/i +{ $values { "str1" "a string" } { "str2" "a string" } { "str3" "a string" } } +{ $description "Computes the integer division of two Roman numerals." } +{ $examples + { $example "USING: io roman ;" + "\"v\" \"iv\" roman/i print" + "i" + } +} ; + +HELP: roman/mod +{ $values { "str1" "a string" } { "str2" "a string" } { "str3" "a string" } { "str4" "a string" } } +{ $description "Computes the quotient and remainder of two Roman numerals." } +{ $examples + { $example "USING: kernel io roman ;" + "\"v\" \"iv\" roman/mod [ print ] bi@" + "i\ni" + } +} ; + +{ roman* roman/i roman/mod } related-words + +HELP: ROMAN: +{ $description "A parsing word that reads the next token and converts it to an integer." } +{ $examples + { $example "USING: prettyprint roman ;" + "ROMAN: v ." + "5" + } +} ; + +ARTICLE: "roman" "Roman numerals" +"The " { $vocab-link "roman" } " vocabulary can convert numbers to and from the Roman numeral system and can perform arithmetic given Roman numerals as input." $nl +"A parsing word for literal Roman numerals:" +{ $subsection POSTPONE: ROMAN: } +"Converting to Roman numerals:" +{ $subsection >roman } +{ $subsection >ROMAN } +"Converting Roman numerals to integers:" +{ $subsection roman> } +"Roman numeral arithmetic:" +{ $subsection roman+ } +{ $subsection roman- } +{ $subsection roman* } +{ $subsection roman/i } +{ $subsection roman/mod } ; + +ABOUT: "roman" diff --git a/basis/roman/roman-tests.factor b/basis/roman/roman-tests.factor new file mode 100644 index 0000000000..82084e0b1f --- /dev/null +++ b/basis/roman/roman-tests.factor @@ -0,0 +1,40 @@ +USING: arrays kernel math roman roman.private sequences tools.test ; + +[ "i" ] [ 1 >roman ] unit-test +[ "ii" ] [ 2 >roman ] unit-test +[ "iii" ] [ 3 >roman ] unit-test +[ "iv" ] [ 4 >roman ] unit-test +[ "v" ] [ 5 >roman ] unit-test +[ "vi" ] [ 6 >roman ] unit-test +[ "vii" ] [ 7 >roman ] unit-test +[ "viii" ] [ 8 >roman ] unit-test +[ "ix" ] [ 9 >roman ] unit-test +[ "x" ] [ 10 >roman ] unit-test +[ "mdclxvi" ] [ 1666 >roman ] unit-test +[ "mmmcdxliv" ] [ 3444 >roman ] unit-test +[ "mmmcmxcix" ] [ 3999 >roman ] unit-test +[ "MMMCMXCIX" ] [ 3999 >ROMAN ] unit-test +[ 3999 ] [ 3999 >ROMAN roman> ] unit-test +[ 1 ] [ 1 >roman roman> ] unit-test +[ 2 ] [ 2 >roman roman> ] unit-test +[ 3 ] [ 3 >roman roman> ] unit-test +[ 4 ] [ 4 >roman roman> ] unit-test +[ 5 ] [ 5 >roman roman> ] unit-test +[ 6 ] [ 6 >roman roman> ] unit-test +[ 7 ] [ 7 >roman roman> ] unit-test +[ 8 ] [ 8 >roman roman> ] unit-test +[ 9 ] [ 9 >roman roman> ] unit-test +[ 10 ] [ 10 >roman roman> ] unit-test +[ 1666 ] [ 1666 >roman roman> ] unit-test +[ 3444 ] [ 3444 >roman roman> ] unit-test +[ 3999 ] [ 3999 >roman roman> ] unit-test +[ 0 >roman ] must-fail +[ 4000 >roman ] must-fail +[ "vi" ] [ "iii" "iii" roman+ ] unit-test +[ "viii" ] [ "x" "ii" roman- ] unit-test +[ "ix" ] [ "iii" "iii" roman* ] unit-test +[ "i" ] [ "iii" "ii" roman/i ] unit-test +[ "i" "ii" ] [ "v" "iii" roman/mod ] unit-test +[ "iii" "iii" roman- ] must-fail + +[ 30 ] [ ROMAN: xxx ] unit-test diff --git a/basis/roman/roman.factor b/basis/roman/roman.factor new file mode 100644 index 0000000000..866ac92872 --- /dev/null +++ b/basis/roman/roman.factor @@ -0,0 +1,78 @@ +! Copyright (C) 2007 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: arrays assocs kernel math math.order math.vectors +namespaces make quotations sequences splitting.monotonic +sequences.private strings unicode.case lexer parser ; +IN: roman + += ; + +: roman>n ( ch -- n ) + 1string roman-digits index roman-values nth ; + +: (>roman) ( n -- ) + roman-values roman-digits [ + [ /mod swap ] dip concat % + ] 2each drop ; + +: (roman>) ( seq -- n ) + dup [ roman>n ] map swap all-eq? [ + sum + ] [ + first2 swap - + ] if ; + +PRIVATE> + +: >roman ( n -- str ) + dup roman-range-check [ + (>roman) + ] "" make ; + +: >ROMAN ( n -- str ) >roman >upper ; + +: roman> ( str -- n ) + >lower [ roman<= ] monotonic-split [ + (roman>) + ] map sum ; + + ( str1 str2 -- m n ) + [ roman> ] bi@ ; + +: binary-roman-op ( str1 str2 quot -- str3 ) + [ 2roman> ] dip call >roman ; inline + +PRIVATE> + +: roman+ ( str1 str2 -- str3 ) + [ + ] binary-roman-op ; + +: roman- ( str1 str2 -- str3 ) + [ - ] binary-roman-op ; + +: roman* ( str1 str2 -- str3 ) + [ * ] binary-roman-op ; + +: roman/i ( str1 str2 -- str3 ) + [ /i ] binary-roman-op ; + +: roman/mod ( str1 str2 -- str3 str4 ) + [ /mod ] binary-roman-op [ >roman ] dip ; + +: ROMAN: scan roman> parsed ; parsing diff --git a/basis/roman/summary.txt b/basis/roman/summary.txt new file mode 100644 index 0000000000..f6d018cd4d --- /dev/null +++ b/basis/roman/summary.txt @@ -0,0 +1 @@ +Roman numerals library diff --git a/basis/roman/tags.txt b/basis/roman/tags.txt new file mode 100644 index 0000000000..8b13789179 --- /dev/null +++ b/basis/roman/tags.txt @@ -0,0 +1 @@ + diff --git a/basis/sequences/complex-components/authors.txt b/basis/sequences/complex-components/authors.txt new file mode 100644 index 0000000000..f13c9c1e77 --- /dev/null +++ b/basis/sequences/complex-components/authors.txt @@ -0,0 +1 @@ +Joe Groff diff --git a/basis/sequences/complex-components/complex-components-docs.factor b/basis/sequences/complex-components/complex-components-docs.factor new file mode 100644 index 0000000000..386735aa7d --- /dev/null +++ b/basis/sequences/complex-components/complex-components-docs.factor @@ -0,0 +1,35 @@ +USING: help.markup help.syntax math multiline +sequences sequences.complex-components ; +IN: sequences.complex-components + +ARTICLE: "sequences.complex-components" "Complex component virtual sequences" +"The " { $link complex-components } " class wraps a sequence of " { $link complex } " number values, presenting a sequence of " { $link real } " values made by interleaving the real and imaginary parts of the complex values in the original sequence." +{ $subsection complex-components } +{ $subsection } ; + +ABOUT: "sequences.complex-components" + +HELP: complex-components +{ $class-description "Sequence wrapper class that transforms a sequence of " { $link complex } " number values into a sequence of " { $link real } " values, interleaving the real and imaginary parts of the complex values in the original sequence." } +{ $examples { $example <" +USING: prettyprint sequences arrays sequences.complex-components ; +{ C{ 1.0 -1.0 } -2.0 C{ 3.0 1.0 } } >array . +"> "{ 1.0 -1.0 -2.0 0 3.0 1.0 }" } } ; + +HELP: +{ $values { "sequence" sequence } { "complex-components" complex-components } } +{ $description "Wraps " { $snippet "sequence" } " in a " { $link complex-components } " wrapper." } +{ $examples +{ $example <" +USING: prettyprint sequences arrays +sequences.complex-components ; +{ C{ 1.0 -1.0 } -2.0 C{ 3.0 1.0 } } third . +"> "-2.0" } +{ $example <" +USING: prettyprint sequences arrays +sequences.complex-components ; +{ C{ 1.0 -1.0 } -2.0 C{ 3.0 1.0 } } fourth . +"> "0" } +} ; + +{ complex-components } related-words diff --git a/basis/sequences/complex-components/complex-components-tests.factor b/basis/sequences/complex-components/complex-components-tests.factor new file mode 100644 index 0000000000..f0c8e92c6e --- /dev/null +++ b/basis/sequences/complex-components/complex-components-tests.factor @@ -0,0 +1,16 @@ +USING: sequences.complex-components +kernel sequences tools.test arrays accessors ; +IN: sequences.complex-components.tests + +: test-array ( -- x ) + { C{ 1.0 2.0 } 3.0 C{ 5.0 6.0 } } ; + +[ 6 ] [ test-array length ] unit-test + +[ 1.0 ] [ test-array first ] unit-test +[ 2.0 ] [ test-array second ] unit-test +[ 3.0 ] [ test-array third ] unit-test +[ 0 ] [ test-array fourth ] unit-test + +[ { 1.0 2.0 3.0 0 5.0 6.0 } ] [ test-array >array ] unit-test + diff --git a/basis/sequences/complex-components/complex-components.factor b/basis/sequences/complex-components/complex-components.factor new file mode 100644 index 0000000000..ae808971b6 --- /dev/null +++ b/basis/sequences/complex-components/complex-components.factor @@ -0,0 +1,28 @@ +USING: accessors kernel math math.functions combinators +sequences sequences.private ; +IN: sequences.complex-components + +TUPLE: complex-components seq ; +INSTANCE: complex-components sequence + +: ( sequence -- complex-components ) + complex-components boa ; inline + +> ] bi* ; inline +: complex-component ( remainder complex -- component ) + swap { + { 0 [ real-part ] } + { 1 [ imaginary-part ] } + } case ; + +PRIVATE> + +M: complex-components length + seq>> length 1 shift ; +M: complex-components nth-unsafe + complex-components@ nth-unsafe complex-component ; +M: complex-components set-nth-unsafe + immutable ; diff --git a/basis/sequences/complex-components/summary.txt b/basis/sequences/complex-components/summary.txt new file mode 100644 index 0000000000..af00158213 --- /dev/null +++ b/basis/sequences/complex-components/summary.txt @@ -0,0 +1 @@ +Virtual sequence wrapper to convert complex values into real value pairs diff --git a/basis/sequences/complex-components/tags.txt b/basis/sequences/complex-components/tags.txt new file mode 100644 index 0000000000..64cdcd9e69 --- /dev/null +++ b/basis/sequences/complex-components/tags.txt @@ -0,0 +1,2 @@ +sequences +math diff --git a/basis/sequences/complex/authors.txt b/basis/sequences/complex/authors.txt new file mode 100644 index 0000000000..f13c9c1e77 --- /dev/null +++ b/basis/sequences/complex/authors.txt @@ -0,0 +1 @@ +Joe Groff diff --git a/basis/sequences/complex/complex-docs.factor b/basis/sequences/complex/complex-docs.factor new file mode 100644 index 0000000000..65dd520fd8 --- /dev/null +++ b/basis/sequences/complex/complex-docs.factor @@ -0,0 +1,31 @@ +USING: help.markup help.syntax math multiline +sequences sequences.complex ; +IN: sequences.complex + +ARTICLE: "sequences.complex" "Complex virtual sequences" +"The " { $link complex-sequence } " class wraps a sequence of " { $link real } " number values, presenting a sequence of " { $link complex } " values made by treating the underlying sequence as pairs of alternating real and imaginary values." +{ $subsection complex-sequence } +{ $subsection } ; + +ABOUT: "sequences.complex" + +HELP: complex-sequence +{ $class-description "Sequence wrapper class that transforms a sequence of " { $link real } " number values into a sequence of " { $link complex } " values, treating the underlying sequence as pairs of alternating real and imaginary values." } +{ $examples { $example <" +USING: prettyprint +specialized-arrays.double sequences.complex +sequences arrays ; +double-array{ 1.0 -1.0 -2.0 2.0 3.0 0.0 } >array . +"> "{ C{ 1.0 -1.0 } C{ -2.0 2.0 } C{ 3.0 0.0 } }" } } ; + +HELP: +{ $values { "sequence" sequence } { "complex-sequence" complex-sequence } } +{ $description "Wraps " { $snippet "sequence" } " in a " { $link complex-sequence } "." } +{ $examples { $example <" +USING: prettyprint +specialized-arrays.double sequences.complex +sequences arrays ; +double-array{ 1.0 -1.0 -2.0 2.0 3.0 0.0 } second . +"> "C{ -2.0 2.0 }" } } ; + +{ complex-sequence } related-words diff --git a/basis/sequences/complex/complex-tests.factor b/basis/sequences/complex/complex-tests.factor new file mode 100644 index 0000000000..5861bc8b02 --- /dev/null +++ b/basis/sequences/complex/complex-tests.factor @@ -0,0 +1,26 @@ +USING: specialized-arrays.float sequences.complex +kernel sequences tools.test arrays accessors ; +IN: sequences.complex.tests + +: test-array ( -- x ) + float-array{ 1.0 2.0 3.0 4.0 } clone ; +: odd-length-test-array ( -- x ) + float-array{ 1.0 2.0 3.0 4.0 5.0 } clone ; + +[ 2 ] [ test-array length ] unit-test +[ 2 ] [ odd-length-test-array length ] unit-test + +[ C{ 1.0 2.0 } ] [ test-array first ] unit-test +[ C{ 3.0 4.0 } ] [ test-array second ] unit-test + +[ { C{ 1.0 2.0 } C{ 3.0 4.0 } } ] +[ test-array >array ] unit-test + +[ float-array{ 1.0 2.0 5.0 6.0 } ] +[ test-array [ C{ 5.0 6.0 } 1 rot set-nth ] [ seq>> ] bi ] +unit-test + +[ float-array{ 7.0 0.0 3.0 4.0 } ] +[ test-array [ 7.0 0 rot set-nth ] [ seq>> ] bi ] +unit-test + diff --git a/basis/sequences/complex/complex.factor b/basis/sequences/complex/complex.factor new file mode 100644 index 0000000000..93f9727f75 --- /dev/null +++ b/basis/sequences/complex/complex.factor @@ -0,0 +1,25 @@ +USING: accessors kernel math math.functions +sequences sequences.private ; +IN: sequences.complex + +TUPLE: complex-sequence seq ; +INSTANCE: complex-sequence sequence + +: ( sequence -- complex-sequence ) + complex-sequence boa ; inline + +> ] bi* ; inline + +PRIVATE> + +M: complex-sequence length + seq>> length -1 shift ; +M: complex-sequence nth-unsafe + complex@ [ nth-unsafe ] [ [ 1+ ] dip nth-unsafe ] 2bi rect> ; +M: complex-sequence set-nth-unsafe + complex@ + [ [ real-part ] [ ] [ ] tri* set-nth-unsafe ] + [ [ imaginary-part ] [ 1+ ] [ ] tri* set-nth-unsafe ] 3bi ; diff --git a/basis/sequences/complex/summary.txt b/basis/sequences/complex/summary.txt new file mode 100644 index 0000000000..d94c4ba0f0 --- /dev/null +++ b/basis/sequences/complex/summary.txt @@ -0,0 +1 @@ +Virtual sequence wrapper to convert real pairs into complex values diff --git a/basis/sequences/complex/tags.txt b/basis/sequences/complex/tags.txt new file mode 100644 index 0000000000..64cdcd9e69 --- /dev/null +++ b/basis/sequences/complex/tags.txt @@ -0,0 +1,2 @@ +sequences +math diff --git a/basis/serialize/serialize.factor b/basis/serialize/serialize.factor index f062548482..3ec1e96c72 100644 --- a/basis/serialize/serialize.factor +++ b/basis/serialize/serialize.factor @@ -70,9 +70,10 @@ M: id equal? over id? [ [ obj>> ] bi@ eq? ] [ 2drop f ] if ; } cond ; : serialize-shared ( obj quot -- ) - >r dup object-id - [ CHAR: o write1 serialize-cell drop ] - r> if* ; inline + [ + dup object-id + [ CHAR: o write1 serialize-cell drop ] + ] dip if* ; inline M: f (serialize) ( obj -- ) drop CHAR: n write1 ; @@ -256,7 +257,7 @@ SYMBOL: deserialized [ ] tri ; : copy-seq-to-tuple ( seq tuple -- ) - >r dup length r> [ set-array-nth ] curry 2each ; + [ dup length ] dip [ set-array-nth ] curry 2each ; : deserialize-tuple ( -- array ) #! Ugly because we have to intern the tuple before reading diff --git a/basis/soundex/author.txt b/basis/soundex/author.txt new file mode 100644 index 0000000000..1901f27a24 --- /dev/null +++ b/basis/soundex/author.txt @@ -0,0 +1 @@ +Slava Pestov diff --git a/basis/soundex/soundex-tests.factor b/basis/soundex/soundex-tests.factor new file mode 100644 index 0000000000..f4bd18e34b --- /dev/null +++ b/basis/soundex/soundex-tests.factor @@ -0,0 +1,5 @@ +IN: soundex.tests +USING: soundex tools.test ; + +[ "S162" ] [ "supercalifrag" soundex ] unit-test +[ "M000" ] [ "M" soundex ] unit-test diff --git a/basis/soundex/soundex.factor b/basis/soundex/soundex.factor new file mode 100644 index 0000000000..416ec4a6bc --- /dev/null +++ b/basis/soundex/soundex.factor @@ -0,0 +1,32 @@ +! Copyright (C) 2008 Slava Pestov. +! See http://factorcode.org/license.txt for BSD license. +USING: sequences grouping assocs kernel ascii unicode.case tr ; +IN: soundex + +TR: soundex-tr + ch>upper + "AEHIOUWYBFPVCGJKQSXZDTLMNR" + "00000000111122222222334556" ; + +: remove-duplicates ( seq -- seq' ) + #! Remove _consecutive_ duplicates (unlike prune which removes + #! all duplicates). + [ 2 [ = not ] assoc-filter values ] [ first ] bi prefix ; + +: first>upper ( seq -- seq' ) 1 head >upper ; +: trim-first ( seq -- seq' ) dup first [ = ] curry trim-left ; +: remove-zeroes ( seq -- seq' ) CHAR: 0 swap remove ; +: remove-non-alpha ( seq -- seq' ) [ alpha? ] filter ; +: pad-4 ( first seq -- seq' ) "000" 3append 4 head ; + +: soundex ( string -- soundex ) + remove-non-alpha [ f ] [ + [ first>upper ] + [ + soundex-tr + [ "" ] [ trim-first ] if-empty + [ "" ] [ remove-duplicates ] if-empty + remove-zeroes + ] bi + pad-4 + ] if-empty ; diff --git a/basis/soundex/summary.txt b/basis/soundex/summary.txt new file mode 100644 index 0000000000..95a271d911 --- /dev/null +++ b/basis/soundex/summary.txt @@ -0,0 +1 @@ +Soundex is a phonetic algorithm for indexing names by sound diff --git a/basis/splitting/monotonic/authors.txt b/basis/splitting/monotonic/authors.txt new file mode 100644 index 0000000000..7c1b2f2279 --- /dev/null +++ b/basis/splitting/monotonic/authors.txt @@ -0,0 +1 @@ +Doug Coleman diff --git a/basis/splitting/monotonic/monotonic-tests.factor b/basis/splitting/monotonic/monotonic-tests.factor new file mode 100644 index 0000000000..ab4c48b292 --- /dev/null +++ b/basis/splitting/monotonic/monotonic-tests.factor @@ -0,0 +1,8 @@ +IN: splitting.monotonic +USING: tools.test math arrays kernel sequences ; + +[ { { 1 } { -1 5 } { 2 4 } } ] +[ { 1 -1 5 2 4 } [ < ] monotonic-split [ >array ] map ] unit-test +[ { { 1 1 1 1 } { 2 2 } { 3 } { 4 } { 5 } { 6 6 6 } } ] +[ { 1 1 1 1 2 2 3 4 5 6 6 6 } [ = ] monotonic-split [ >array ] map ] unit-test + diff --git a/basis/splitting/monotonic/monotonic.factor b/basis/splitting/monotonic/monotonic.factor new file mode 100644 index 0000000000..5bc7a51522 --- /dev/null +++ b/basis/splitting/monotonic/monotonic.factor @@ -0,0 +1,17 @@ +! Copyright (C) 2008 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: make namespaces sequences kernel fry ; +IN: splitting.monotonic + +: ,, ( obj -- ) building get peek push ; +: v, ( -- ) V{ } clone , ; +: ,v ( -- ) building get dup peek empty? [ dup pop* ] when drop ; + +: (monotonic-split) ( seq quot -- newseq ) + [ + [ dup unclip suffix ] dip + v, '[ over ,, @ [ v, ] unless ] 2each ,v + ] { } make ; inline + +: monotonic-split ( seq quot -- newseq ) + over empty? [ 2drop { } ] [ (monotonic-split) ] if ; inline diff --git a/basis/splitting/monotonic/summary.txt b/basis/splitting/monotonic/summary.txt new file mode 100644 index 0000000000..6782bd0010 --- /dev/null +++ b/basis/splitting/monotonic/summary.txt @@ -0,0 +1 @@ +Split a sequence into monotonically-increasing subsequences diff --git a/basis/splitting/monotonic/tags.txt b/basis/splitting/monotonic/tags.txt new file mode 100644 index 0000000000..d4c087751e --- /dev/null +++ b/basis/splitting/monotonic/tags.txt @@ -0,0 +1,2 @@ +algorithms +sequences diff --git a/basis/stack-checker/errors/errors-docs.factor b/basis/stack-checker/errors/errors-docs.factor index d4a074031d..c3b9797a36 100644 --- a/basis/stack-checker/errors/errors-docs.factor +++ b/basis/stack-checker/errors/errors-docs.factor @@ -28,22 +28,10 @@ $nl } ; HELP: too-many->r -{ $error-description "Thrown if inference notices a quotation pushing elements on the retain stack without popping them at the end." } -{ $examples - { $code - ": too-many->r-example ( a b -- )" - " >r 3 + >r ;" - } -} ; +{ $error-description "Thrown if inference notices a quotation pushing elements on the retain stack without popping them at the end." } ; HELP: too-many-r> -{ $error-description "Thrown if inference notices a quotation popping elements from the return stack it did not place there." } -{ $examples - { $code - ": too-many-r>-example ( a b -- )" - " r> 3 + >r ;" - } -} ; +{ $error-description "Thrown if inference notices a quotation popping elements from the return stack it did not place there." } ; HELP: missing-effect { $error-description "Thrown when inference encounters a word lacking a stack effect declaration. Stack effects of words must be declared, with the exception of words which only push literals on the stack." } diff --git a/basis/stack-checker/known-words/known-words.factor b/basis/stack-checker/known-words/known-words.factor index bce42f1456..3836fadeb7 100644 --- a/basis/stack-checker/known-words/known-words.factor +++ b/basis/stack-checker/known-words/known-words.factor @@ -174,8 +174,6 @@ M: object infer-call* : infer-special ( word -- ) { - { \ >r [ 1 infer->r ] } - { \ r> [ 1 infer-r> ] } { \ declare [ infer-declare ] } { \ call [ infer-call ] } { \ (call) [ infer-call ] } @@ -194,6 +192,7 @@ M: object infer-call* { \ [ infer- ] } { \ (throw) [ infer-(throw) ] } { \ exit [ infer-exit ] } + { \ load-local [ 1 infer->r ] } { \ load-locals [ infer-load-locals ] } { \ get-local [ infer-get-local ] } { \ drop-locals [ infer-drop-locals ] } @@ -213,9 +212,9 @@ M: object infer-call* "local-word-def" word-prop infer-quot-here ; { - >r r> declare call (call) slip 2slip 3slip dip 2dip 3dip + declare call (call) slip 2slip 3slip dip 2dip 3dip curry compose execute (execute) if dispatch - (throw) load-locals get-local drop-locals do-primitive + (throw) load-local load-locals get-local drop-locals do-primitive alien-invoke alien-indirect alien-callback } [ t "special" set-word-prop ] each diff --git a/basis/stack-checker/stack-checker-tests.factor b/basis/stack-checker/stack-checker-tests.factor index defcde53f0..7b2a6d2d83 100644 --- a/basis/stack-checker/stack-checker-tests.factor +++ b/basis/stack-checker/stack-checker-tests.factor @@ -6,7 +6,7 @@ quotations effects tools.test continuations generic.standard sorting assocs definitions prettyprint io inspector classes.tuple classes.union classes.predicate debugger threads.private io.streams.string io.timeouts io.thread -sequences.private destructors combinators eval ; +sequences.private destructors combinators eval locals.backend ; IN: stack-checker.tests \ infer. must-infer @@ -218,7 +218,7 @@ DEFER: do-crap* MATH: xyz ( a b -- c ) M: fixnum xyz 2array ; M: float xyz - [ 3 ] bi@ swapd >r 2array swap r> 2array swap ; + [ 3 ] bi@ swapd [ 2array swap ] dip 2array swap ; [ [ xyz ] infer ] [ inference-error? ] must-fail-with @@ -320,7 +320,7 @@ DEFER: bar : bad-bin ( a b -- ) 5 [ 5 bad-bin bad-bin 5 ] [ 2drop ] if ; [ [ bad-bin ] infer ] must-fail -[ [ r> ] infer ] [ inference-error? ] must-fail-with +[ [ 1 drop-locals ] infer ] [ inference-error? ] must-fail-with ! Regression [ [ cleave ] infer ] [ inference-error? ] must-fail-with @@ -480,7 +480,7 @@ DEFER: an-inline-word dup [ normal-word-2 ] when ; : an-inline-word ( obj quot -- ) - >r normal-word r> call ; inline + [ normal-word ] dip call ; inline { 1 1 } [ [ 3 * ] an-inline-word ] must-infer-as @@ -502,8 +502,8 @@ ERROR: custom-error ; [ custom-error inference-error ] infer ] unit-test -[ T{ effect f 1 1 t } ] [ - [ dup >r 3 throw r> ] infer +[ T{ effect f 1 2 t } ] [ + [ dup [ 3 throw ] dip ] infer ] unit-test ! This was a false trigger of the undecidable quotation @@ -511,7 +511,7 @@ ERROR: custom-error ; { 2 1 } [ find-last-sep ] must-infer-as ! Regression -: missing->r-check >r ; +: missing->r-check 1 load-locals ; [ [ missing->r-check ] infer ] must-fail @@ -548,7 +548,7 @@ M: object inference-invalidation-d inference-invalidation-c 2drop ; [ [ inference-invalidation-d ] infer ] must-fail -: bad-recursion-3 ( -- ) dup [ >r bad-recursion-3 r> ] when ; inline +: bad-recursion-3 ( -- ) dup [ [ bad-recursion-3 ] dip ] when ; inline [ [ bad-recursion-3 ] infer ] must-fail : bad-recursion-4 ( -- ) 4 [ dup call roll ] times ; inline @@ -572,7 +572,7 @@ M: object inference-invalidation-d inference-invalidation-c 2drop ; DEFER: eee' : ddd' ( ? -- ) [ f eee' ] when ; inline recursive -: eee' ( ? -- ) >r swap [ ] r> ddd' call ; inline recursive +: eee' ( ? -- ) [ swap [ ] ] dip ddd' call ; inline recursive [ [ eee' ] infer ] [ inference-error? ] must-fail-with diff --git a/basis/symbols/authors.txt b/basis/symbols/authors.txt deleted file mode 100644 index f372b574ae..0000000000 --- a/basis/symbols/authors.txt +++ /dev/null @@ -1,2 +0,0 @@ -Slava Pestov -Doug Coleman diff --git a/basis/symbols/summary.txt b/basis/symbols/summary.txt deleted file mode 100644 index 3093468c50..0000000000 --- a/basis/symbols/summary.txt +++ /dev/null @@ -1 +0,0 @@ -Utility for defining multiple symbols at a time diff --git a/basis/symbols/symbols-docs.factor b/basis/symbols/symbols-docs.factor deleted file mode 100644 index 9f79b71365..0000000000 --- a/basis/symbols/symbols-docs.factor +++ /dev/null @@ -1,9 +0,0 @@ -USING: help.markup help.syntax ; -IN: symbols - -HELP: SYMBOLS: -{ $syntax "SYMBOLS: words... ;" } -{ $values { "words" "a sequence of new words to define" } } -{ $description "Creates a new word for every token until the ';'." } -{ $examples { $example "USING: prettyprint symbols ;" "IN: scratchpad" "SYMBOLS: foo bar baz ;\nfoo . bar . baz ." "foo\nbar\nbaz" } } -{ $see-also POSTPONE: SYMBOL: } ; diff --git a/basis/symbols/symbols-tests.factor b/basis/symbols/symbols-tests.factor deleted file mode 100644 index 274c4de85b..0000000000 --- a/basis/symbols/symbols-tests.factor +++ /dev/null @@ -1,21 +0,0 @@ -USING: kernel symbols tools.test parser generic words accessors -eval ; -IN: symbols.tests - -[ ] [ SYMBOLS: a b c ; ] unit-test -[ a ] [ a ] unit-test -[ b ] [ b ] unit-test -[ c ] [ c ] unit-test - -DEFER: blah - -[ ] [ "IN: symbols.tests GENERIC: blah" eval ] unit-test -[ ] [ "IN: symbols.tests USE: symbols SYMBOLS: blah ;" eval ] unit-test - -[ f ] [ \ blah generic? ] unit-test -[ t ] [ \ blah symbol? ] unit-test - -[ "IN: symbols.tests USE: symbols SINGLETONS: blah blah blah ;" eval ] -[ error>> error>> def>> \ blah eq? ] -must-fail-with - diff --git a/basis/symbols/symbols.factor b/basis/symbols/symbols.factor deleted file mode 100644 index 6cf8eac6fb..0000000000 --- a/basis/symbols/symbols.factor +++ /dev/null @@ -1,15 +0,0 @@ -! Copyright (C) 2008 Doug Coleman. -! See http://factorcode.org/license.txt for BSD license. -USING: parser lexer sequences words kernel classes.singleton -classes.parser ; -IN: symbols - -: SYMBOLS: - ";" parse-tokens - [ create-in dup reset-generic define-symbol ] each ; - parsing - -: SINGLETONS: - ";" parse-tokens - [ create-class-in define-singleton-class ] each ; - parsing diff --git a/basis/symbols/tags.txt b/basis/symbols/tags.txt deleted file mode 100644 index f4274299b1..0000000000 --- a/basis/symbols/tags.txt +++ /dev/null @@ -1 +0,0 @@ -extensions diff --git a/basis/tools/deploy/macosx/macosx.factor b/basis/tools/deploy/macosx/macosx.factor index 10e1566290..1dcc6fe4c1 100644 --- a/basis/tools/deploy/macosx/macosx.factor +++ b/basis/tools/deploy/macosx/macosx.factor @@ -5,7 +5,7 @@ io.directories io.directories.hierarchy kernel namespaces make sequences system tools.deploy.backend tools.deploy.config tools.deploy.config.editor assocs hashtables prettyprint io.backend.unix cocoa io.encodings.utf8 io.backend -cocoa.application cocoa.classes cocoa.plists qualified +cocoa.application cocoa.classes cocoa.plists combinators ; IN: tools.deploy.macosx diff --git a/basis/tools/deploy/shaker/shaker.factor b/basis/tools/deploy/shaker/shaker.factor index 135679444b..c894a8931b 100755 --- a/basis/tools/deploy/shaker/shaker.factor +++ b/basis/tools/deploy/shaker/shaker.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2007, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: accessors qualified io.backend io.streams.c init fry +USING: accessors io.backend io.streams.c init fry namespaces make assocs kernel parser lexer strings.parser vocabs sequences words words.private memory kernel.private continuations io vocabs.loader system strings sets diff --git a/basis/tools/disassembler/gdb/gdb.factor b/basis/tools/disassembler/gdb/gdb.factor index e97cc203a2..9076b67606 100755 --- a/basis/tools/disassembler/gdb/gdb.factor +++ b/basis/tools/disassembler/gdb/gdb.factor @@ -2,7 +2,7 @@ ! See http://factorcode.org/license.txt for BSD license. USING: io.files io.files.temp io words alien kernel math.parser alien.syntax io.launcher system assocs arrays sequences -namespaces make qualified system math io.encodings.ascii +namespaces make system math io.encodings.ascii accessors tools.disassembler ; IN: tools.disassembler.gdb diff --git a/basis/tools/files/files.factor b/basis/tools/files/files.factor index 54882800b0..3670891e41 100755 --- a/basis/tools/files/files.factor +++ b/basis/tools/files/files.factor @@ -2,7 +2,7 @@ ! See http://factorcode.org/license.txt for BSD license. USING: accessors arrays combinators io io.files io.files.info io.directories kernel math.parser sequences system vocabs.loader -calendar math symbols fry prettyprint ; +calendar math fry prettyprint ; IN: tools.files usage-profile M: word (profile.) - dup unparse swap write-object ; + [ name>> "( no name )" or ] [ ] bi write-object ; TUPLE: vocab-profile vocab ; @@ -29,8 +29,8 @@ M: string (profile.) dup write-object ; M: method-body (profile.) - dup synopsis swap "method-generic" word-prop - write-object ; + [ synopsis ] [ "method-generic" word-prop ] bi + write-object ; : counter. ( obj n -- ) [ @@ -58,7 +58,10 @@ M: method-body (profile.) "Call counts for words which call " write dup pprint ":" print - smart-usage [ word? ] filter counters counters. ; + [ smart-usage [ word? ] filter ] + [ compiled-generic-usage keys ] + [ compiled-usage keys ] + tri 3append prune counters counters. ; : vocabs-profile. ( -- ) "Call counts for all vocabularies:" print diff --git a/basis/tools/vocabs/browser/browser.factor b/basis/tools/vocabs/browser/browser.factor index e4db72a2fe..36f23a8298 100644 --- a/basis/tools/vocabs/browser/browser.factor +++ b/basis/tools/vocabs/browser/browser.factor @@ -6,7 +6,7 @@ classes.singleton classes.tuple classes.union combinators definitions effects fry generic help help.markup help.stylesheet help.topics io io.files io.pathnames io.styles kernel macros make namespaces prettyprint sequences sets sorting summary -tools.vocabs vocabs vocabs.loader words ; +tools.vocabs vocabs vocabs.loader words words.symbol ; IN: tools.vocabs.browser : vocab-status-string ( vocab -- string ) diff --git a/basis/tuple-arrays/tuple-arrays.factor b/basis/tuple-arrays/tuple-arrays.factor index 5da7085773..af62c0b0d7 100644 --- a/basis/tuple-arrays/tuple-arrays.factor +++ b/basis/tuple-arrays/tuple-arrays.factor @@ -16,7 +16,7 @@ M: tuple-array nth [ seq>> nth ] [ class>> ] bi prefix >tuple ; M: tuple-array set-nth ( elt n seq -- ) - >r >r tuple>array 1 tail r> r> seq>> set-nth ; + [ tuple>array 1 tail ] 2dip seq>> set-nth ; M: tuple-array new-sequence class>> ; diff --git a/basis/ui/gadgets/panes/panes.factor b/basis/ui/gadgets/panes/panes.factor index 79a47380b6..efdd54bcc7 100644 --- a/basis/ui/gadgets/panes/panes.factor +++ b/basis/ui/gadgets/panes/panes.factor @@ -358,25 +358,25 @@ M: f sloppy-pick-up* [ 3drop { } ] if ; -: move-caret ( pane -- pane ) - dup hand-rel over sloppy-pick-up >>caret +: move-caret ( pane loc -- pane ) + over screen-loc v- over sloppy-pick-up >>caret dup relayout-1 ; : begin-selection ( pane -- ) f >>selecting? - move-caret + hand-loc get move-caret f >>mark drop ; : extend-selection ( pane -- ) hand-moved? [ dup selecting?>> [ - move-caret + hand-loc get move-caret ] [ dup hand-clicked get child? [ t >>selecting? dup hand-clicked set-global - move-caret + hand-click-loc get move-caret caret>mark ] when ] if @@ -394,7 +394,7 @@ M: f sloppy-pick-up* : select-to-caret ( pane -- ) t >>selecting? dup mark>> [ caret>mark ] unless - move-caret + hand-loc get move-caret dup request-focus com-copy-selection ; diff --git a/basis/ui/gadgets/theme/theme.factor b/basis/ui/gadgets/theme/theme.factor index fa36e61d90..6ca3868d87 100644 --- a/basis/ui/gadgets/theme/theme.factor +++ b/basis/ui/gadgets/theme/theme.factor @@ -2,7 +2,7 @@ ! Copyright (C) 2006, 2007 Alex Chapman. ! See http://factorcode.org/license.txt for BSD license. USING: arrays kernel sequences io.styles ui.gadgets ui.render -colors colors.gray qualified accessors ; +colors colors.gray accessors ; QUALIFIED: colors IN: ui.gadgets.theme diff --git a/basis/ui/gestures/gestures.factor b/basis/ui/gestures/gestures.factor index 123a7620d1..b74a36bc0b 100644 --- a/basis/ui/gestures/gestures.factor +++ b/basis/ui/gestures/gestures.factor @@ -3,7 +3,7 @@ USING: accessors arrays assocs kernel math math.order models namespaces make sequences words strings system hashtables math.parser math.vectors classes.tuple classes boxes calendar -alarms symbols combinators sets columns fry deques ui.gadgets ; +alarms combinators sets columns fry deques ui.gadgets ; IN: ui.gestures GENERIC: handle-gesture ( gesture gadget -- ? ) diff --git a/basis/ui/tools/interactor/interactor.factor b/basis/ui/tools/interactor/interactor.factor index 51425b124d..40da6ebafc 100644 --- a/basis/ui/tools/interactor/interactor.factor +++ b/basis/ui/tools/interactor/interactor.factor @@ -7,7 +7,7 @@ quotations sequences strings threads listener classes.tuple ui.commands ui.gadgets ui.gadgets.editors ui.gadgets.status-bar ui.gadgets.presentations ui.gadgets.worlds ui.gestures definitions calendar concurrency.flags concurrency.mailboxes -ui.tools.workspace accessors sets destructors fry ; +ui.tools.workspace accessors sets destructors fry vocabs.parser ; IN: ui.tools.interactor ! If waiting is t, we're waiting for user input, and invoking diff --git a/basis/ui/tools/operations/operations.factor b/basis/ui/tools/operations/operations.factor index 2297382a96..a9405424dc 100644 --- a/basis/ui/tools/operations/operations.factor +++ b/basis/ui/tools/operations/operations.factor @@ -8,7 +8,8 @@ io.styles kernel namespaces parser prettyprint quotations tools.annotations editors tools.profiler tools.test tools.time tools.walker ui.commands ui.gadgets.editors ui.gestures ui.operations ui.tools.deploy vocabs vocabs.loader words -sequences tools.vocabs classes compiler.units accessors ; +sequences tools.vocabs classes compiler.units accessors +vocabs.parser ; IN: ui.tools.operations V{ } clone operations set-global diff --git a/basis/ui/windows/windows.factor b/basis/ui/windows/windows.factor index d6bab73017..c22fcb6cbe 100755 --- a/basis/ui/windows/windows.factor +++ b/basis/ui/windows/windows.factor @@ -8,7 +8,7 @@ make sequences strings vectors words windows.kernel32 windows.gdi32 windows.user32 windows.opengl32 windows.messages windows.types windows.nt windows threads libc combinators fry combinators.short-circuit continuations command-line shuffle -opengl ui.render ascii math.bitwise locals symbols accessors +opengl ui.render ascii math.bitwise locals accessors math.geometry.rect math.order ascii calendar io.encodings.utf16n ; IN: ui.windows diff --git a/basis/ui/x11/x11.factor b/basis/ui/x11/x11.factor index 96633198c0..666ebf2f18 100755 --- a/basis/ui/x11/x11.factor +++ b/basis/ui/x11/x11.factor @@ -5,7 +5,7 @@ ui.gestures ui.backend ui.clipboards ui.gadgets.worlds ui.render ui.event-loop assocs kernel math namespaces opengl sequences strings x11.xlib x11.events x11.xim x11.glx x11.clipboard x11.constants x11.windows io.encodings.string io.encodings.ascii -io.encodings.utf8 combinators command-line qualified +io.encodings.utf8 combinators command-line math.vectors classes.tuple opengl.gl threads math.geometry.rect environment ascii ; IN: ui.x11 diff --git a/basis/unicode/script/script.factor b/basis/unicode/script/script.factor index 9691797128..ad9a6d0896 100644 --- a/basis/unicode/script/script.factor +++ b/basis/unicode/script/script.factor @@ -1,9 +1,10 @@ ! Copyright (C) 2008 Daniel Ehrenberg. ! See http://factorcode.org/license.txt for BSD license. USING: accessors values kernel sequences assocs io.files -io.encodings ascii math.ranges io splitting math.parser +io.encodings ascii math.ranges io splitting math.parser namespaces make byte-arrays locals math sets io.encodings.ascii -words compiler.units arrays interval-maps unicode.data ; +words words.symbol compiler.units arrays interval-maps +unicode.data ; IN: unicode.script > append require >> diff --git a/basis/unix/kqueue/macosx/macosx.factor b/basis/unix/kqueue/macosx/macosx.factor index 0bc6ce5785..843a0afad9 100644 --- a/basis/unix/kqueue/macosx/macosx.factor +++ b/basis/unix/kqueue/macosx/macosx.factor @@ -1,4 +1,4 @@ -USING: alien.syntax constants ; +USING: alien.syntax ; IN: unix.kqueue C-STRUCT: kevent diff --git a/basis/unix/kqueue/netbsd/netbsd.factor b/basis/unix/kqueue/netbsd/netbsd.factor index 5e23626e1d..7ba942d712 100644 --- a/basis/unix/kqueue/netbsd/netbsd.factor +++ b/basis/unix/kqueue/netbsd/netbsd.factor @@ -1,4 +1,4 @@ -USING: alien.syntax constants ; +USING: alien.syntax ; IN: unix.kqueue C-STRUCT: kevent diff --git a/basis/unix/kqueue/openbsd/openbsd.factor b/basis/unix/kqueue/openbsd/openbsd.factor index fc2e7d20ca..c62ba05a4c 100644 --- a/basis/unix/kqueue/openbsd/openbsd.factor +++ b/basis/unix/kqueue/openbsd/openbsd.factor @@ -1,4 +1,4 @@ -USING: alien.syntax constants ; +USING: alien.syntax ; IN: unix.kqueue C-STRUCT: kevent diff --git a/basis/unix/linux/epoll/epoll.factor b/basis/unix/linux/epoll/epoll.factor index ebc3ab8bd1..7c68dfa45a 100644 --- a/basis/unix/linux/epoll/epoll.factor +++ b/basis/unix/linux/epoll/epoll.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. IN: unix.linux.epoll -USING: alien.syntax math constants ; +USING: alien.syntax math ; FUNCTION: int epoll_create ( int size ) ; diff --git a/basis/unix/linux/fs/authors.txt b/basis/unix/linux/fs/authors.txt deleted file mode 100755 index 6cfd5da273..0000000000 --- a/basis/unix/linux/fs/authors.txt +++ /dev/null @@ -1 +0,0 @@ -Eduardo Cavazos diff --git a/basis/unix/linux/fs/fs.factor b/basis/unix/linux/fs/fs.factor deleted file mode 100644 index 6cb9f68934..0000000000 --- a/basis/unix/linux/fs/fs.factor +++ /dev/null @@ -1,23 +0,0 @@ -USING: alien.syntax ; -IN: unix.linux.fs - -: MS_RDONLY 1 ; ! Mount read-only. -: MS_NOSUID 2 ; ! Ignore suid and sgid bits. -: MS_NODEV 4 ; ! Disallow access to device special files. -: MS_NOEXEC 8 ; ! Disallow program execution. -: MS_SYNCHRONOUS 16 ; ! Writes are synced at once. -: MS_REMOUNT 32 ; ! Alter flags of a mounted FS. -: MS_MANDLOCK 64 ; ! Allow mandatory locks on an FS. -: S_WRITE 128 ; ! Write on file/directory/symlink. -: S_APPEND 256 ; ! Append-only file. -: S_IMMUTABLE 512 ; ! Immutable file. -: MS_NOATIME 1024 ; ! Do not update access times. -: MS_NODIRATIME 2048 ; ! Do not update directory access times. -: MS_BIND 4096 ; ! Bind directory at different place. - -FUNCTION: int mount -( char* special_file, char* dir, char* fstype, ulong options, void* data ) ; - -! FUNCTION: int umount2 ( char* file, int flags ) ; - -FUNCTION: int umount ( char* file ) ; diff --git a/basis/unix/linux/fs/tags.txt b/basis/unix/linux/fs/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/linux/fs/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/linux/if/authors.txt b/basis/unix/linux/if/authors.txt deleted file mode 100755 index 6cfd5da273..0000000000 --- a/basis/unix/linux/if/authors.txt +++ /dev/null @@ -1 +0,0 @@ -Eduardo Cavazos diff --git a/basis/unix/linux/if/if.factor b/basis/unix/linux/if/if.factor deleted file mode 100644 index 0a908831ee..0000000000 --- a/basis/unix/linux/if/if.factor +++ /dev/null @@ -1,98 +0,0 @@ - -USING: alien.syntax ; - -IN: unix.linux.if - -: IFNAMSIZ 16 ; -: IF_NAMESIZE 16 ; -: IFHWADDRLEN 6 ; - -! Standard interface flags (netdevice->flags) - -: IFF_UP HEX: 1 ; ! interface is up -: IFF_BROADCAST HEX: 2 ; ! broadcast address valid -: IFF_DEBUG HEX: 4 ; ! turn on debugging -: IFF_LOOPBACK HEX: 8 ; ! is a loopback net -: IFF_POINTOPOINT HEX: 10 ; ! interface is has p-p link -: IFF_NOTRAILERS HEX: 20 ; ! avoid use of trailers -: IFF_RUNNING HEX: 40 ; ! interface running and carrier ok -: IFF_NOARP HEX: 80 ; ! no ARP protocol -: IFF_PROMISC HEX: 100 ; ! receive all packets -: IFF_ALLMULTI HEX: 200 ; ! receive all multicast packets - -: IFF_MASTER HEX: 400 ; ! master of a load balancer -: IFF_SLAVE HEX: 800 ; ! slave of a load balancer - -: IFF_MULTICAST HEX: 1000 ; ! Supports multicast - -! #define IFF_VOLATILE -! (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_MASTER|IFF_SLAVE|IFF_RUNNING) - -: IFF_PORTSEL HEX: 2000 ; ! can set media type -: IFF_AUTOMEDIA HEX: 4000 ; ! auto media select active -: IFF_DYNAMIC HEX: 8000 ; ! dialup device with changing addresses - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -C-STRUCT: struct-ifmap - { "ulong" "mem-start" } - { "ulong" "mem-end" } - { "ushort" "base-addr" } - { "uchar" "irq" } - { "uchar" "dma" } - { "uchar" "port" } ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -! Hmm... the generic sockaddr type isn't defined anywhere. -! Put it here for now. - -TYPEDEF: ushort sa_family_t - -C-STRUCT: struct-sockaddr - { "sa_family_t" "sa_family" } - { { "char" 14 } "sa_data" } ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -! C-UNION: union-ifr-ifrn { "char" IFNAMSIZ } ; - -C-UNION: union-ifr-ifrn { "char" 16 } ; - -C-UNION: union-ifr-ifru - "struct-sockaddr" -! "sockaddr" - "short" - "int" - "struct-ifmap" -! { "char" IFNAMSIZ } - { "char" 16 } - "caddr_t" ; - -C-STRUCT: struct-ifreq - { "union-ifr-ifrn" "ifr-ifrn" } - { "union-ifr-ifru" "ifr-ifru" } ; - -: ifr-name ( struct-ifreq -- value ) struct-ifreq-ifr-ifrn ; - -: ifr-hwaddr ( struct-ifreq -- value ) struct-ifreq-ifr-ifru ; -: ifr-addr ( struct-ifreq -- value ) struct-ifreq-ifr-ifru ; -: ifr-dstaddr ( struct-ifreq -- value ) struct-ifreq-ifr-ifru ; -: ifr-broadaddr ( struct-ifreq -- value ) struct-ifreq-ifr-ifru ; -: ifr-netmask ( struct-ifreq -- value ) struct-ifreq-ifr-ifru ; -: ifr-flags ( struct-ifreq -- value ) struct-ifreq-ifr-ifru ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -C-UNION: union-ifc-ifcu "caddr_t" "struct-ifreq*" ; - -C-STRUCT: struct-ifconf - { "int" "ifc-len" } - { "union-ifc-ifcu" "ifc-ifcu" } ; - -: ifc-len ( struct-ifconf -- value ) struct-ifconf-ifc-len ; - -: ifc-buf ( struct-ifconf -- value ) struct-ifconf-ifc-ifcu ; -: ifc-req ( struct-ifconf -- value ) struct-ifconf-ifc-ifcu ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! \ No newline at end of file diff --git a/basis/unix/linux/if/tags.txt b/basis/unix/linux/if/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/linux/if/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/linux/ifreq/authors.txt b/basis/unix/linux/ifreq/authors.txt deleted file mode 100755 index 6cfd5da273..0000000000 --- a/basis/unix/linux/ifreq/authors.txt +++ /dev/null @@ -1 +0,0 @@ -Eduardo Cavazos diff --git a/basis/unix/linux/ifreq/ifreq.factor b/basis/unix/linux/ifreq/ifreq.factor deleted file mode 100644 index 5dc1c0fde2..0000000000 --- a/basis/unix/linux/ifreq/ifreq.factor +++ /dev/null @@ -1,60 +0,0 @@ - -USING: kernel alien alien.c-types - io.sockets - unix - unix.linux.sockios - unix.linux.if ; - -IN: unix.linux.ifreq - -: set-if-addr ( name addr -- ) - "struct-ifreq" - rot ascii string>alien over set-struct-ifreq-ifr-ifrn - swap 0 make-sockaddr over set-struct-ifreq-ifr-ifru - - AF_INET SOCK_DGRAM 0 socket SIOCSIFADDR rot ioctl drop ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: set-if-flags ( name flags -- ) - "struct-ifreq" - rot ascii string>alien over set-struct-ifreq-ifr-ifrn - swap over set-struct-ifreq-ifr-ifru - - AF_INET SOCK_DGRAM 0 socket SIOCSIFFLAGS rot ioctl drop ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: set-if-dst-addr ( name addr -- ) - "struct-ifreq" - rot ascii string>alien over set-struct-ifreq-ifr-ifrn - swap 0 make-sockaddr over set-struct-ifreq-ifr-ifru - - AF_INET SOCK_DGRAM 0 socket SIOCSIFDSTADDR rot ioctl drop ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: set-if-brd-addr ( name addr -- ) - "struct-ifreq" - rot ascii string>alien over set-struct-ifreq-ifr-ifrn - swap 0 make-sockaddr over set-struct-ifreq-ifr-ifru - - AF_INET SOCK_DGRAM 0 socket SIOCSIFBRDADDR rot ioctl drop ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: set-if-netmask ( name addr -- ) - "struct-ifreq" - rot ascii string>alien over set-struct-ifreq-ifr-ifrn - swap 0 make-sockaddr over set-struct-ifreq-ifr-ifru - - AF_INET SOCK_DGRAM 0 socket SIOCSIFNETMASK rot ioctl drop ; - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -: set-if-metric ( name metric -- ) - "struct-ifreq" - rot ascii string>alien over set-struct-ifreq-ifr-ifrn - swap over set-struct-ifreq-ifr-ifru - - AF_INET SOCK_DGRAM 0 socket SIOCSIFMETRIC rot ioctl drop ; \ No newline at end of file diff --git a/basis/unix/linux/ifreq/tags.txt b/basis/unix/linux/ifreq/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/linux/ifreq/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/linux/inotify/inotify.factor b/basis/unix/linux/inotify/inotify.factor index 9084b41c50..e3d40b5b28 100644 --- a/basis/unix/linux/inotify/inotify.factor +++ b/basis/unix/linux/inotify/inotify.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: alien.syntax math math.bitwise constants ; +USING: alien.syntax math math.bitwise ; IN: unix.linux.inotify C-STRUCT: inotify-event diff --git a/basis/unix/linux/linux.factor b/basis/unix/linux/linux.factor index 61ced5c97b..0cf33be1bf 100644 --- a/basis/unix/linux/linux.factor +++ b/basis/unix/linux/linux.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2005, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: alien.syntax alias constants ; +USING: alien.syntax ; IN: unix ! Linux. diff --git a/basis/unix/linux/route/authors.txt b/basis/unix/linux/route/authors.txt deleted file mode 100755 index 6cfd5da273..0000000000 --- a/basis/unix/linux/route/authors.txt +++ /dev/null @@ -1 +0,0 @@ -Eduardo Cavazos diff --git a/basis/unix/linux/route/route.factor b/basis/unix/linux/route/route.factor deleted file mode 100644 index 4d9bbfae99..0000000000 --- a/basis/unix/linux/route/route.factor +++ /dev/null @@ -1,55 +0,0 @@ - -USING: alien.syntax ; - -IN: unix.linux.route - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -C-STRUCT: struct-rtentry - { "ulong" "rt_pad1" } - { "struct-sockaddr" "rt_dst" } - { "struct-sockaddr" "rt_gateway" } - { "struct-sockaddr" "rt_genmask" } - { "ushort" "rt_flags" } - { "short" "rt_pad2" } - { "ulong" "rt_pad3" } - { "uchar" "rt_tos" } - { "uchar" "rt_class" } - { "short" "rt_pad4" } - { "short" "rt_metric" } - { "char*" "rt_dev" } - { "ulong" "rt_mtu" } - { "ulong" "rt_window" } - { "ushort" "rt_irtt" } ; - -: RTF_UP HEX: 0001 ; ! Route usable. -: RTF_GATEWAY HEX: 0002 ; ! Destination is a gateway. - -: RTF_HOST HEX: 0004 ; ! Host entry (net otherwise). -: RTF_REINSTATE HEX: 0008 ; ! Reinstate route after timeout. -: RTF_DYNAMIC HEX: 0010 ; ! Created dyn. (by redirect). -: RTF_MODIFIED HEX: 0020 ; ! Modified dyn. (by redirect). -: RTF_MTU HEX: 0040 ; ! Specific MTU for this route. -: RTF_MSS RTF_MTU ; ! Compatibility. -: RTF_WINDOW HEX: 0080 ; ! Per route window clamping. -: RTF_IRTT HEX: 0100 ; ! Initial round trip time. -: RTF_REJECT HEX: 0200 ; ! Reject route. -: RTF_STATIC HEX: 0400 ; ! Manually injected route. -: RTF_XRESOLVE HEX: 0800 ; ! External resolver. -: RTF_NOFORWARD HEX: 1000 ; ! Forwarding inhibited. -: RTF_THROW HEX: 2000 ; ! Go to next class. -: RTF_NOPMTUDISC HEX: 4000 ; ! Do not send packets with DF. - -! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -USING: kernel alien.c-types io.sockets - unix unix.linux.sockios ; - -: route ( dst gateway genmask flags -- ) - >r >r >r >r - "struct-rtentry" - r> 0 make-sockaddr over set-struct-rtentry-rt_dst - r> 0 make-sockaddr over set-struct-rtentry-rt_gateway - r> 0 make-sockaddr over set-struct-rtentry-rt_genmask - r> over set-struct-rtentry-rt_flags - AF_INET SOCK_DGRAM 0 socket SIOCADDRT rot ioctl drop ; diff --git a/basis/unix/linux/route/tags.txt b/basis/unix/linux/route/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/linux/route/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/linux/sockios/authors.txt b/basis/unix/linux/sockios/authors.txt deleted file mode 100755 index 6cfd5da273..0000000000 --- a/basis/unix/linux/sockios/authors.txt +++ /dev/null @@ -1 +0,0 @@ -Eduardo Cavazos diff --git a/basis/unix/linux/sockios/sockios.factor b/basis/unix/linux/sockios/sockios.factor deleted file mode 100644 index fd1bb10e2e..0000000000 --- a/basis/unix/linux/sockios/sockios.factor +++ /dev/null @@ -1,64 +0,0 @@ - -IN: unix.linux.sockios - -! Imported from linux-headers-2.6.15-28-686 on Ubuntu 6.06 - -! Routing table calls -: SIOCADDRT HEX: 890B ; ! add routing table entry -: SIOCDELRT HEX: 890C ; ! delete routing table entry -: SIOCRTMSG HEX: 890D ; ! call to routing system - -! Socket configuration controls - -: SIOCGIFNAME HEX: 8910 ; ! get iface name -: SIOCSIFLINK HEX: 8911 ; ! set iface channel -: SIOCGIFCONF HEX: 8912 ; ! get iface list -: SIOCGIFFLAGS HEX: 8913 ; ! get flags -: SIOCSIFFLAGS HEX: 8914 ; ! set flags -: SIOCGIFADDR HEX: 8915 ; ! get PA address -: SIOCSIFADDR HEX: 8916 ; ! set PA address -: SIOCGIFDSTADDR HEX: 8917 ; ! get remote PA address -: SIOCSIFDSTADDR HEX: 8918 ; ! set remote PA address -: SIOCGIFBRDADDR HEX: 8919 ; ! get broadcast PA address -: SIOCSIFBRDADDR HEX: 891a ; ! set broadcast PA address -: SIOCGIFNETMASK HEX: 891b ; ! get network PA mask -: SIOCSIFNETMASK HEX: 891c ; ! set network PA mask -: SIOCGIFMETRIC HEX: 891d ; ! get metric -: SIOCSIFMETRIC HEX: 891e ; ! set metric -: SIOCGIFMEM HEX: 891f ; ! get memory address (BSD) -: SIOCSIFMEM HEX: 8920 ; ! set memory address (BSD) -: SIOCGIFMTU HEX: 8921 ; ! get MTU size -: SIOCSIFMTU HEX: 8922 ; ! set MTU size -: SIOCSIFNAME HEX: 8923 ; ! set interface name -: SIOCSIFHWADDR HEX: 8924 ; ! set hardware address -: SIOCGIFENCAP HEX: 8925 ; ! get/set encapsulations -: SIOCSIFENCAP HEX: 8926 ; -: SIOCGIFHWADDR HEX: 8927 ; ! Get hardware address -: SIOCGIFSLAVE HEX: 8929 ; ! Driver slaving support -: SIOCSIFSLAVE HEX: 8930 ; -: SIOCADDMULTI HEX: 8931 ; ! Multicast address lists -: SIOCDELMULTI HEX: 8932 ; -: SIOCGIFINDEX HEX: 8933 ; ! name -> if_index mapping -: SIOGIFINDEX SIOCGIFINDEX ; ! misprint compatibility :-) -: SIOCSIFPFLAGS HEX: 8934 ; ! set/get extended flags set -: SIOCGIFPFLAGS HEX: 8935 ; -: SIOCDIFADDR HEX: 8936 ; ! delete PA address -: SIOCSIFHWBROADCAST HEX: 8937 ; ! set hardware broadcast addr -: SIOCGIFCOUNT HEX: 8938 ; ! get number of devices - -: SIOCGIFBR HEX: 8940 ; ! Bridging support -: SIOCSIFBR HEX: 8941 ; ! Set bridging options - -: SIOCGIFTXQLEN HEX: 8942 ; ! Get the tx queue length -: SIOCSIFTXQLEN HEX: 8943 ; ! Set the tx queue length - -: SIOCGIFDIVERT HEX: 8944 ; ! Frame diversion support -: SIOCSIFDIVERT HEX: 8945 ; ! Set frame diversion options - -: SIOCETHTOOL HEX: 8946 ; ! Ethtool interface - -: SIOCGMIIPHY HEX: 8947 ; ! Get address of MII PHY in use -: SIOCGMIIREG HEX: 8948 ; ! Read MII PHY register. -: SIOCSMIIREG HEX: 8949 ; ! Write MII PHY register. - -: SIOCWANDEV HEX: 894A ; ! get/set netdev parameters diff --git a/basis/unix/linux/sockios/tags.txt b/basis/unix/linux/sockios/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/linux/sockios/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/linux/swap/authors.txt b/basis/unix/linux/swap/authors.txt deleted file mode 100755 index 6cfd5da273..0000000000 --- a/basis/unix/linux/swap/authors.txt +++ /dev/null @@ -1 +0,0 @@ -Eduardo Cavazos diff --git a/basis/unix/linux/swap/swap.factor b/basis/unix/linux/swap/swap.factor deleted file mode 100644 index b4edaaa8e3..0000000000 --- a/basis/unix/linux/swap/swap.factor +++ /dev/null @@ -1,12 +0,0 @@ - -USING: alien.syntax ; - -IN: unix.linux.swap - -: SWAP_FLAG_PREFER HEX: 8000 ; ! Set if swap priority is specified. -: SWAP_FLAG_PRIO_MASK HEX: 7fff ; -: SWAP_FLAG_PRIO_SHIFT 0 ; - -FUNCTION: int swapon ( char* path, int flags ) ; - -FUNCTION: int swapoff ( char* path ) ; \ No newline at end of file diff --git a/basis/unix/linux/swap/tags.txt b/basis/unix/linux/swap/tags.txt deleted file mode 100644 index 6bf68304bb..0000000000 --- a/basis/unix/linux/swap/tags.txt +++ /dev/null @@ -1 +0,0 @@ -unportable diff --git a/basis/unix/process/process.factor b/basis/unix/process/process.factor index ec782f5164..6e83ea9a42 100644 --- a/basis/unix/process/process.factor +++ b/basis/unix/process/process.factor @@ -1,6 +1,6 @@ USING: kernel alien.c-types alien.strings sequences math alien.syntax unix vectors kernel namespaces continuations threads assocs vectors -io.backend.unix io.encodings.utf8 unix.utilities constants ; +io.backend.unix io.encodings.utf8 unix.utilities ; IN: unix.process ! Low-level Unix process launching utilities. These are used diff --git a/basis/unix/solaris/solaris.factor b/basis/unix/solaris/solaris.factor index fc7e152931..d91fbdfddc 100644 --- a/basis/unix/solaris/solaris.factor +++ b/basis/unix/solaris/solaris.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2006 Patrick Mauritz. ! See http://factorcode.org/license.txt for BSD license. IN: unix -USING: alien.syntax system kernel layouts constants ; +USING: alien.syntax system kernel layouts ; ! Solaris. diff --git a/basis/unix/stat/stat.factor b/basis/unix/stat/stat.factor index 2164d89ac6..156be96190 100644 --- a/basis/unix/stat/stat.factor +++ b/basis/unix/stat/stat.factor @@ -1,5 +1,5 @@ USING: kernel system combinators alien.syntax alien.c-types -math io.backend.unix vocabs.loader unix constants ; +math io.backend.unix vocabs.loader unix ; IN: unix.stat ! File Types diff --git a/basis/unix/statfs/freebsd/freebsd.factor b/basis/unix/statfs/freebsd/freebsd.factor index 17b58aede6..e6a033e09d 100644 --- a/basis/unix/statfs/freebsd/freebsd.factor +++ b/basis/unix/statfs/freebsd/freebsd.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. -USING: alien.syntax constants ; +USING: alien.syntax ; IN: unix.statfs.freebsd CONSTANT: MFSNAMELEN 16 ! length of type name including null */ diff --git a/basis/unix/statfs/macosx/macosx.factor b/basis/unix/statfs/macosx/macosx.factor index 829a49c81f..f80eb29ccd 100644 --- a/basis/unix/statfs/macosx/macosx.factor +++ b/basis/unix/statfs/macosx/macosx.factor @@ -2,8 +2,7 @@ ! See http://factorcode.org/license.txt for BSD license. USING: alien.c-types io.encodings.utf8 io.encodings.string kernel sequences unix.stat accessors unix combinators math -grouping system alien.strings math.bitwise alien.syntax -alias constants ; +grouping system alien.strings math.bitwise alien.syntax ; IN: unix.statfs.macosx CONSTANT: MNT_RDONLY HEX: 00000001 diff --git a/basis/unix/statfs/openbsd/openbsd.factor b/basis/unix/statfs/openbsd/openbsd.factor index d9e6b867b6..f495f2af4e 100644 --- a/basis/unix/statfs/openbsd/openbsd.factor +++ b/basis/unix/statfs/openbsd/openbsd.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. -USING: alien.syntax constants ; +USING: alien.syntax ; IN: unix.statfs.openbsd CONSTANT: MFSNAMELEN 16 diff --git a/basis/unix/statvfs/freebsd/freebsd.factor b/basis/unix/statvfs/freebsd/freebsd.factor index a2a3168464..3140b85004 100644 --- a/basis/unix/statvfs/freebsd/freebsd.factor +++ b/basis/unix/statvfs/freebsd/freebsd.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. -USING: alien.syntax constants ; +USING: alien.syntax ; IN: unix.statvfs.freebsd C-STRUCT: statvfs diff --git a/basis/unix/statvfs/linux/linux.factor b/basis/unix/statvfs/linux/linux.factor index 5c04468ad3..c92fef6aaa 100644 --- a/basis/unix/statvfs/linux/linux.factor +++ b/basis/unix/statvfs/linux/linux.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. -USING: alien.syntax constants ; +USING: alien.syntax ; IN: unix.statvfs.linux C-STRUCT: statvfs64 diff --git a/basis/unix/statvfs/macosx/macosx.factor b/basis/unix/statvfs/macosx/macosx.factor index fc85b9d9dc..0aafad69fa 100644 --- a/basis/unix/statvfs/macosx/macosx.factor +++ b/basis/unix/statvfs/macosx/macosx.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. -USING: alien.syntax constants ; +USING: alien.syntax ; IN: unix.statvfs.macosx C-STRUCT: statvfs diff --git a/basis/unix/statvfs/netbsd/netbsd.factor b/basis/unix/statvfs/netbsd/netbsd.factor index e3e54fb4e2..1adc1a3da8 100644 --- a/basis/unix/statvfs/netbsd/netbsd.factor +++ b/basis/unix/statvfs/netbsd/netbsd.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. -USING: alien.syntax constants ; +USING: alien.syntax ; IN: unix.statvfs.netbsd CONSTANT: _VFS_NAMELEN 32 diff --git a/basis/unix/statvfs/openbsd/openbsd.factor b/basis/unix/statvfs/openbsd/openbsd.factor index 76c2af9127..4ca8d0749d 100644 --- a/basis/unix/statvfs/openbsd/openbsd.factor +++ b/basis/unix/statvfs/openbsd/openbsd.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. -USING: alien.syntax constants ; +USING: alien.syntax ; IN: unix.statvfs.openbsd C-STRUCT: statvfs diff --git a/basis/unix/unix.factor b/basis/unix/unix.factor index c0e496a041..52e7473800 100644 --- a/basis/unix/unix.factor +++ b/basis/unix/unix.factor @@ -2,9 +2,9 @@ ! See http://factorcode.org/license.txt for BSD license. USING: alien alien.c-types alien.syntax kernel libc sequences continuations byte-arrays strings math namespaces -system combinators vocabs.loader qualified accessors +system combinators vocabs.loader accessors stack-checker macros locals generalizations unix.types -io vocabs vocabs.loader constants ; +io vocabs vocabs.loader ; IN: unix CONSTANT: PROT_NONE 0 diff --git a/basis/unix/utmpx/utmpx.factor b/basis/unix/utmpx/utmpx.factor index 30dac2de1f..6b70ceee2e 100644 --- a/basis/unix/utmpx/utmpx.factor +++ b/basis/unix/utmpx/utmpx.factor @@ -3,7 +3,7 @@ USING: alien.c-types alien.syntax combinators continuations io.encodings.string io.encodings.utf8 kernel sequences strings unix calendar system accessors unix.time calendar.unix -vocabs.loader constants ; +vocabs.loader ; IN: unix.utmpx CONSTANT: EMPTY 0 diff --git a/basis/validators/validators.factor b/basis/validators/validators.factor index 7c41d3efdb..78e01fdaf7 100644 --- a/basis/validators/validators.factor +++ b/basis/validators/validators.factor @@ -51,7 +51,7 @@ IN: validators ] if ; : v-regexp ( str what regexp -- str ) - >r over r> matches? + [ over ] dip matches? [ drop ] [ "invalid " prepend throw ] if ; : v-email ( str -- str ) diff --git a/basis/windows/advapi32/advapi32.factor b/basis/windows/advapi32/advapi32.factor index 0d95c06a87..f76e389dce 100644 --- a/basis/windows/advapi32/advapi32.factor +++ b/basis/windows/advapi32/advapi32.factor @@ -1,5 +1,4 @@ -USING: alias alien.syntax kernel math windows.types math.bitwise -constants ; +USING: alien.syntax kernel math windows.types math.bitwise ; IN: windows.advapi32 LIBRARY: advapi32 diff --git a/basis/windows/dinput/constants/constants.factor b/basis/windows/dinput/constants/constants.factor index e3bec6d7ac..0e9a03f075 100755 --- a/basis/windows/dinput/constants/constants.factor +++ b/basis/windows/dinput/constants/constants.factor @@ -1,6 +1,6 @@ USING: windows.dinput windows.kernel32 windows.ole32 windows.com windows.com.syntax alien alien.c-types alien.syntax kernel system namespaces -combinators sequences symbols fry math accessors macros words quotations +combinators sequences fry math accessors macros words quotations libc continuations generalizations splitting locals assocs init struct-arrays ; IN: windows.dinput.constants diff --git a/basis/windows/dinput/dinput.factor b/basis/windows/dinput/dinput.factor index 76cba4ff36..1cd22beb75 100755 --- a/basis/windows/dinput/dinput.factor +++ b/basis/windows/dinput/dinput.factor @@ -1,6 +1,5 @@ USING: windows.kernel32 windows.ole32 windows.com windows.com.syntax -alien alien.c-types alien.syntax kernel system namespaces math constants -alias ; +alien alien.c-types alien.syntax kernel system namespaces math ; IN: windows.dinput << diff --git a/basis/windows/dragdrop-listener/dragdrop-listener.factor b/basis/windows/dragdrop-listener/dragdrop-listener.factor index 8384bb1acc..4543aa703a 100644 --- a/basis/windows/dragdrop-listener/dragdrop-listener.factor +++ b/basis/windows/dragdrop-listener/dragdrop-listener.factor @@ -36,26 +36,30 @@ SYMBOL: +listener-dragdrop-wrapper+ { { "IDropTarget" { [ ! DragEnter - >r 2drop - filenames-from-data-object - length 1 = [ DROPEFFECT_COPY ] [ DROPEFFECT_NONE ] if - dup 0 r> set-ulong-nth + [ + 2drop + filenames-from-data-object + length 1 = [ DROPEFFECT_COPY ] [ DROPEFFECT_NONE ] if + dup 0 + ] dip set-ulong-nth >>last-drop-effect drop S_OK ] [ ! DragOver - >r 2drop last-drop-effect>> 0 r> set-ulong-nth + [ 2drop last-drop-effect>> 0 ] dip set-ulong-nth S_OK ] [ ! DragLeave drop S_OK ] [ ! Drop - >r 2drop nip - filenames-from-data-object - dup length 1 = [ - first unparse [ "USE: parser " % % " run-file" % ] "" make - eval-listener - DROPEFFECT_COPY - ] [ 2drop DROPEFFECT_NONE ] if - 0 r> set-ulong-nth + [ + 2drop nip + filenames-from-data-object + dup length 1 = [ + first unparse [ "USE: parser " % % " run-file" % ] "" make + eval-listener + DROPEFFECT_COPY + ] [ 2drop DROPEFFECT_NONE ] if + 0 + ] dip set-ulong-nth S_OK ] } } diff --git a/basis/windows/errors/errors.factor b/basis/windows/errors/errors.factor index 7c19cbde53..56bba768de 100644 --- a/basis/windows/errors/errors.factor +++ b/basis/windows/errors/errors.factor @@ -1,4 +1,3 @@ -USING: kernel constants ; IN: windows.errors CONSTANT: ERROR_SUCCESS 0 diff --git a/basis/windows/gdi32/gdi32.factor b/basis/windows/gdi32/gdi32.factor index 9c16664de8..077adf1961 100755 --- a/basis/windows/gdi32/gdi32.factor +++ b/basis/windows/gdi32/gdi32.factor @@ -1,7 +1,7 @@ ! FUNCTION: AbortDoc ! Copyright (C) 2005, 2006 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. -USING: alien alien.syntax kernel windows.types alias constants ; +USING: alien alien.syntax kernel windows.types ; IN: windows.gdi32 ! Stock Logical Objects diff --git a/basis/windows/kernel32/kernel32.factor b/basis/windows/kernel32/kernel32.factor index cdfb31cbf7..c38b5f94ca 100755 --- a/basis/windows/kernel32/kernel32.factor +++ b/basis/windows/kernel32/kernel32.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2005, 2006 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. -USING: alien alien.syntax kernel windows.types alias constants ; +USING: alien alien.syntax kernel windows.types ; IN: windows.kernel32 CONSTANT: MAX_PATH 260 @@ -987,8 +987,6 @@ FUNCTION: DWORD GetFileType ( HANDLE hFile ) ; FUNCTION: DWORD GetFullPathNameW ( LPCTSTR lpFileName, DWORD nBufferLength, LPTSTR lpBuffer, LPTSTR* lpFilePart ) ; ALIAS: GetFullPathName GetFullPathNameW -! clear "license.txt" 32768 "char[32768]" f over >r GetFullPathName r> swap 2 * head >string . - ! FUNCTION: GetGeoInfoA ! FUNCTION: GetGeoInfoW ! FUNCTION: GetHandleContext diff --git a/basis/windows/messages/messages.factor b/basis/windows/messages/messages.factor index bb30968217..10e6cd43c5 100755 --- a/basis/windows/messages/messages.factor +++ b/basis/windows/messages/messages.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2005, 2006 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. USING: accessors assocs hashtables kernel math namespaces words -windows.types vocabs sequences constants alias ; +windows.types vocabs sequences ; IN: windows.messages SYMBOL: windows-messages diff --git a/basis/windows/shell32/shell32.factor b/basis/windows/shell32/shell32.factor index 1282d3b9a5..b8e6d2c2b0 100644 --- a/basis/windows/shell32/shell32.factor +++ b/basis/windows/shell32/shell32.factor @@ -3,7 +3,7 @@ USING: alien alien.c-types alien.strings alien.syntax combinators io.encodings.utf16n io.files io.pathnames kernel windows windows.com windows.com.syntax windows.ole32 -windows.user32 constants alias ; +windows.user32 ; IN: windows.shell32 CONSTANT: CSIDL_DESKTOP HEX: 00 diff --git a/basis/windows/user32/user32.factor b/basis/windows/user32/user32.factor index 88c6d54f0a..e2e2c7e150 100644 --- a/basis/windows/user32/user32.factor +++ b/basis/windows/user32/user32.factor @@ -1,7 +1,7 @@ ! Copyright (C) 2005, 2006 Doug Coleman. ! See http://factorcode.org/license.txt for BSD license. USING: alien alien.syntax parser namespaces kernel math -windows.types generalizations math.bitwise alias constants ; +windows.types generalizations math.bitwise ; IN: windows.user32 ! HKL for ActivateKeyboardLayout diff --git a/basis/windows/winsock/winsock.factor b/basis/windows/winsock/winsock.factor index 5c70e82ea9..27069ed743 100644 --- a/basis/windows/winsock/winsock.factor +++ b/basis/windows/winsock/winsock.factor @@ -2,8 +2,7 @@ ! See http://factorcode.org/license.txt for BSD license. USING: alien alien.c-types alien.strings alien.syntax arrays byte-arrays kernel math sequences windows.types windows.kernel32 -windows.errors windows math.bitwise alias io.encodings.utf16n -alias constants ; +windows.errors windows math.bitwise io.encodings.utf16n ; IN: windows.winsock USE: libc diff --git a/basis/x11/xlib/xlib.factor b/basis/x11/xlib/xlib.factor index 07872fe576..f86c24b845 100644 --- a/basis/x11/xlib/xlib.factor +++ b/basis/x11/xlib/xlib.factor @@ -13,7 +13,7 @@ USING: kernel arrays alien alien.c-types alien.strings alien.syntax math math.bitwise words sequences namespaces -continuations io io.encodings.ascii alias ; +continuations io io.encodings.ascii ; IN: x11.xlib LIBRARY: xlib diff --git a/basis/xml-rpc/example.factor b/basis/xml-rpc/example.factor index 836a85d52d..e2be36c450 100644 --- a/basis/xml-rpc/example.factor +++ b/basis/xml-rpc/example.factor @@ -10,7 +10,7 @@ USING: kernel hashtables xml-rpc xml calendar sequences { "divide" [ / ] } } ; : apply-function ( name args -- {number} ) - >r functions hash r> first2 rot call 1array ; + [ functions hash ] dip first2 rot call 1array ; : problem>solution ( xml-doc -- xml-doc ) receive-rpc dup rpc-method-name swap rpc-method-params diff --git a/basis/xml-rpc/xml-rpc.factor b/basis/xml-rpc/xml-rpc.factor index 9472f5e09d..602fb90172 100644 --- a/basis/xml-rpc/xml-rpc.factor +++ b/basis/xml-rpc/xml-rpc.factor @@ -55,7 +55,7 @@ M: base64 item>xml "params" build-tag* ; : method-call ( name seq -- xml ) - params >r "methodName" build-tag r> + params [ "methodName" build-tag ] dip 2array "methodCall" build-tag* build-xml ; : return-params ( seq -- xml ) @@ -117,7 +117,7 @@ TAG: boolean xml>item : unstruct-member ( tag -- ) children-tags first2 first-child-tag xml>item - >r children>string r> swap set ; + [ children>string ] dip swap set ; TAG: struct xml>item [ @@ -158,10 +158,10 @@ TAG: array xml>item : post-rpc ( rpc url -- rpc ) ! This needs to do something in the event of an error - >r send-rpc r> http-post nip string>xml receive-rpc ; + [ send-rpc ] dip http-post nip string>xml receive-rpc ; : invoke-method ( params method url -- ) - >r swap r> post-rpc ; + [ swap ] dip post-rpc ; : put-http-response ( string -- ) "HTTP/1.1 200 OK\nConnection: close\nContent-Length: " write diff --git a/basis/xmode/catalog/catalog.factor b/basis/xmode/catalog/catalog.factor index 16da4be1d3..f8f1788bcf 100644 --- a/basis/xmode/catalog/catalog.factor +++ b/basis/xmode/catalog/catalog.factor @@ -8,12 +8,13 @@ TUPLE: mode file file-name-glob first-line-glob ; r - mode new { - { "FILE" f (>>file) } - { "FILE_NAME_GLOB" f (>>file-name-glob) } - { "FIRST_LINE_GLOB" f (>>first-line-glob) } - } init-from-tag r> + "NAME" over at [ + mode new { + { "FILE" f (>>file) } + { "FILE_NAME_GLOB" f (>>file-name-glob) } + { "FIRST_LINE_GLOB" f (>>first-line-glob) } + } init-from-tag + ] dip rot set-at ; TAGS> @@ -56,7 +57,7 @@ SYMBOL: rule-sets [ get-rule-set nip swap (>>delegate) ] [ 2drop ] if ; : each-rule ( rule-set quot -- ) - >r rules>> values concat r> each ; inline + [ rules>> values concat ] dip each ; inline : resolve-delegates ( ruleset -- ) [ resolve-delegate ] each-rule ; @@ -65,8 +66,7 @@ SYMBOL: rule-sets over [ dupd update ] [ nip clone ] if ; : import-keywords ( parent child -- ) - over >r [ keywords>> ] bi@ ?update - r> (>>keywords) ; + over [ [ keywords>> ] bi@ ?update ] dip (>>keywords) ; : import-rules ( parent child -- ) swap [ add-rule ] curry each-rule ; @@ -115,5 +115,5 @@ ERROR: mutually-recursive-rulesets ruleset ; : find-mode ( file-name first-line -- mode ) modes - [ nip >r 2dup r> suitable-mode? ] assoc-find - 2drop >r 2drop r> [ "text" ] unless* ; + [ nip [ 2dup ] dip suitable-mode? ] assoc-find + 2drop [ 2drop ] dip [ "text" ] unless* ; diff --git a/basis/xmode/loader/syntax/syntax.factor b/basis/xmode/loader/syntax/syntax.factor index cbebe090c3..9b53000e02 100644 --- a/basis/xmode/loader/syntax/syntax.factor +++ b/basis/xmode/loader/syntax/syntax.factor @@ -101,4 +101,4 @@ TAGS> : init-eol-span-tag ( -- ) [ drop init-eol-span ] , ; : parse-keyword-tag ( tag keyword-map -- ) - >r dup main>> string>token swap children>string r> set-at ; + [ dup main>> string>token swap children>string ] dip set-at ; diff --git a/basis/xmode/marker/marker.factor b/basis/xmode/marker/marker.factor index f777eaa18c..c37d60df14 100644 --- a/basis/xmode/marker/marker.factor +++ b/basis/xmode/marker/marker.factor @@ -69,7 +69,7 @@ M: string-matcher text-matches? ] keep string>> length and ; M: regexp text-matches? - >r >string r> match-head ; + [ >string ] dip match-head ; : rule-start-matches? ( rule -- match-count/f ) dup start>> tuck swap can-match-here? [ @@ -97,7 +97,7 @@ DEFER: get-rules f swap rules>> at ?push-all ; : get-char-rules ( vector/f char ruleset -- vector/f ) - >r ch>upper r> rules>> at ?push-all ; + [ ch>upper ] dip rules>> at ?push-all ; : get-rules ( char ruleset -- seq ) f -rot [ get-char-rules ] keep get-always-rules ; diff --git a/basis/xmode/marker/state/state.factor b/basis/xmode/marker/state/state.factor index 096230ff4e..44d3a0285e 100644 --- a/basis/xmode/marker/state/state.factor +++ b/basis/xmode/marker/state/state.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2007, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: xmode.marker.context xmode.rules symbols accessors +USING: xmode.marker.context xmode.rules accessors xmode.tokens namespaces make kernel sequences assocs math ; IN: xmode.marker.state @@ -20,14 +20,14 @@ SYMBOLS: line last-offset position context current-rule-set keywords>> ; : token, ( from to id -- ) - 2over = [ 3drop ] [ >r line get subseq r> , ] if ; + 2over = [ 3drop ] [ [ line get subseq ] dip , ] if ; : prev-token, ( id -- ) - >r last-offset get position get r> token, + [ last-offset get position get ] dip token, position get last-offset set ; : next-token, ( len id -- ) - >r position get 2dup + r> token, + [ position get 2dup + ] dip token, position get + dup 1- position set last-offset set ; : push-context ( rules -- ) diff --git a/basis/xmode/rules/rules.factor b/basis/xmode/rules/rules.factor index e4f12bcc49..adc43d7bb6 100644 --- a/basis/xmode/rules/rules.factor +++ b/basis/xmode/rules/rules.factor @@ -41,7 +41,7 @@ MEMO: standard-rule-set ( id -- ruleset ) : ?push-all ( seq1 seq2 -- seq1+seq2 ) [ - over [ >r V{ } like r> over push-all ] [ nip ] if + over [ [ V{ } like ] dip over push-all ] [ nip ] if ] when* ; : rule-set-no-word-sep* ( ruleset -- str ) @@ -107,8 +107,7 @@ M: regexp text-hash-char drop f ; text-hash-char [ suffix ] when* ; : add-rule ( rule ruleset -- ) - >r dup rule-chars* >upper swap - r> rules>> inverted-index ; + [ dup rule-chars* >upper swap ] dip rules>> inverted-index ; : add-escape-rule ( string ruleset -- ) over [ diff --git a/basis/xmode/tokens/tokens.factor b/basis/xmode/tokens/tokens.factor index b8917529d6..945f4bb046 100644 --- a/basis/xmode/tokens/tokens.factor +++ b/basis/xmode/tokens/tokens.factor @@ -1,4 +1,5 @@ -USING: accessors parser words sequences namespaces kernel assocs +USING: accessors parser words words.symbol +sequences namespaces kernel assocs compiler.units ; IN: xmode.tokens diff --git a/basis/xmode/utilities/utilities.factor b/basis/xmode/utilities/utilities.factor index 69fc08742b..b5a2f6eb98 100644 --- a/basis/xmode/utilities/utilities.factor +++ b/basis/xmode/utilities/utilities.factor @@ -53,5 +53,5 @@ SYMBOL: tag-handler-word : TAGS> tag-handler-word get - tag-handlers get >alist [ >r dup main>> r> case ] curry + tag-handlers get >alist [ [ dup main>> ] dip case ] curry define ; parsing diff --git a/core/bootstrap/primitives.factor b/core/bootstrap/primitives.factor index b3c3cb88e4..61d178ccf8 100644 --- a/core/bootstrap/primitives.factor +++ b/core/bootstrap/primitives.factor @@ -380,12 +380,11 @@ tuple { "over" "kernel" } { "pick" "kernel" } { "swap" "kernel" } - { ">r" "kernel" } - { "r>" "kernel" } { "eq?" "kernel" } { "tag" "kernel.private" } { "slot" "slots.private" } { "get-local" "locals.backend" } + { "load-local" "locals.backend" } { "drop-locals" "locals.backend" } } [ make-sub-primitive ] assoc-each diff --git a/core/bootstrap/syntax.factor b/core/bootstrap/syntax.factor index badc1f5218..654a8f5f34 100644 --- a/core/bootstrap/syntax.factor +++ b/core/bootstrap/syntax.factor @@ -1,6 +1,6 @@ -! Copyright (C) 2007 Slava Pestov. +! Copyright (C) 2007, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. -USING: words sequences vocabs kernel ; +USING: words words.symbol sequences vocabs kernel ; IN: bootstrap.syntax "syntax" create-vocab drop @@ -40,7 +40,10 @@ IN: bootstrap.syntax "PRIVATE>" "SBUF\"" "SINGLETON:" + "SINGLETONS:" "SYMBOL:" + "SYMBOLS:" + "CONSTANT:" "TUPLE:" "SLOT:" "T{" @@ -48,6 +51,12 @@ IN: bootstrap.syntax "INTERSECTION:" "USE:" "USING:" + "QUALIFIED:" + "QUALIFIED-WITH:" + "FROM:" + "EXCLUDE:" + "RENAME:" + "ALIAS:" "V{" "W{" "[" diff --git a/core/classes/classes.factor b/core/classes/classes.factor index 2ce4b934c8..acff3d57e5 100644 --- a/core/classes/classes.factor +++ b/core/classes/classes.factor @@ -1,8 +1,9 @@ ! Copyright (C) 2004, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: accessors arrays definitions assocs kernel kernel.private -slots.private namespaces make sequences strings words vectors -math quotations combinators sorting effects graphs vocabs sets ; +slots.private namespaces make sequences strings words words.symbol +vectors math quotations combinators sorting effects graphs +vocabs sets ; IN: classes SYMBOL: class<=-cache diff --git a/core/classes/singleton/singleton-docs.factor b/core/classes/singleton/singleton-docs.factor index f647b006d9..d6911576dd 100644 --- a/core/classes/singleton/singleton-docs.factor +++ b/core/classes/singleton/singleton-docs.factor @@ -4,6 +4,7 @@ IN: classes.singleton ARTICLE: "singletons" "Singleton classes" "A singleton is a class with only one instance and with no state." { $subsection POSTPONE: SINGLETON: } +{ $subsection POSTPONE: SINGLETONS: } { $subsection define-singleton-class } "The set of all singleton classes is itself a class:" { $subsection singleton-class? } diff --git a/core/combinators/combinators.factor b/core/combinators/combinators.factor index 6edec815da..29a2e7a8bd 100644 --- a/core/combinators/combinators.factor +++ b/core/combinators/combinators.factor @@ -136,7 +136,7 @@ ERROR: no-case ; ! recursive-hashcode : recursive-hashcode ( n obj quot -- code ) - pick 0 <= [ 3drop 0 ] [ rot 1- -rot call ] if ; inline + pick 0 <= [ 3drop 0 ] [ [ 1- ] 2dip call ] if ; inline ! These go here, not in sequences and hashtables, since those ! two cannot depend on us diff --git a/core/compiler/errors/errors-docs.factor b/core/compiler/errors/errors-docs.factor index cb896dbf53..aa4f8e329d 100644 --- a/core/compiler/errors/errors-docs.factor +++ b/core/compiler/errors/errors-docs.factor @@ -1,6 +1,6 @@ IN: compiler.errors USING: help.markup help.syntax vocabs.loader words io -quotations ; +quotations words.symbol ; ARTICLE: "compiler-errors" "Compiler warnings and errors" "The compiler saves various notifications in a global variable:" diff --git a/core/effects/effects.factor b/core/effects/effects.factor index db6b2461b5..8a06653eb8 100644 --- a/core/effects/effects.factor +++ b/core/effects/effects.factor @@ -44,8 +44,6 @@ M: effect effect>string ( effect -- string ) GENERIC: stack-effect ( word -- effect/f ) -M: symbol stack-effect drop (( -- symbol )) ; - M: word stack-effect { "declared-effect" "inferred-effect" } swap props>> [ at ] curry map [ ] find nip ; diff --git a/core/growable/growable.factor b/core/growable/growable.factor index 3c487af0a5..c4970f98bd 100644 --- a/core/growable/growable.factor +++ b/core/growable/growable.factor @@ -1,7 +1,5 @@ ! Copyright (C) 2005, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. - -! Some low-level code used by vectors and string buffers. USING: accessors kernel kernel.private math math.private sequences sequences.private ; IN: growable @@ -22,7 +20,7 @@ M: growable set-nth-unsafe underlying>> set-nth-unsafe ; : contract ( len seq -- ) [ length ] keep - [ 0 -rot set-nth-unsafe ] curry + [ [ 0 ] 2dip set-nth-unsafe ] curry (each-integer) ; inline : growable-check ( n seq -- n seq ) diff --git a/core/kernel/kernel-tests.factor b/core/kernel/kernel-tests.factor index 320025b124..0702f4931f 100644 --- a/core/kernel/kernel-tests.factor +++ b/core/kernel/kernel-tests.factor @@ -17,7 +17,7 @@ IN: kernel.tests [ ] [ :c ] unit-test -[ { } set-retainstack r> ] [ { "kernel-error" 13 f f } = ] must-fail-with +[ 3 [ { } set-retainstack ] dip ] [ { "kernel-error" 13 f f } = ] must-fail-with [ ] [ :c ] unit-test @@ -35,7 +35,7 @@ IN: kernel.tests [ ] [ [ :c ] with-string-writer drop ] unit-test -: overflow-r 3 >r overflow-r ; +: overflow-r 3 [ overflow-r ] dip ; [ overflow-r ] [ { "kernel-error" 14 f f } = ] must-fail-with diff --git a/core/math/order/order-docs.factor b/core/math/order/order-docs.factor index c8d3095ce6..ef006bbc21 100644 --- a/core/math/order/order-docs.factor +++ b/core/math/order/order-docs.factor @@ -1,5 +1,5 @@ USING: help.markup help.syntax kernel math quotations -math.private words ; +math.private words words.symbol ; IN: math.order HELP: <=> diff --git a/core/namespaces/namespaces-docs.factor b/core/namespaces/namespaces-docs.factor index 4716a8fe99..1cc3d86e98 100644 --- a/core/namespaces/namespaces-docs.factor +++ b/core/namespaces/namespaces-docs.factor @@ -34,7 +34,7 @@ ARTICLE: "namespaces.private" "Namespace implementation details" ARTICLE: "namespaces" "Variables and namespaces" "The " { $vocab-link "namespaces" } " vocabulary implements simple dynamically-scoped variables." $nl -"A variable is an entry in an assoc of bindings, where the assoc is implicit rather than passed on the stack. These assocs are termed " { $emphasis "namespaces" } ". Nesting of scopes is implemented with a search order on namespaces, defined by a " { $emphasis "namestack" } ". Since namespaces are just assoc, any object can be used as a variable, however by convention, variables are keyed by symbols (see " { $link "symbols" } ")." +"A variable is an entry in an assoc of bindings, where the assoc is implicit rather than passed on the stack. These assocs are termed " { $emphasis "namespaces" } ". Nesting of scopes is implemented with a search order on namespaces, defined by a " { $emphasis "namestack" } ". Since namespaces are just assoc, any object can be used as a variable, however by convention, variables are keyed by symbols (see " { $link "words.symbol" } ")." $nl "The " { $link get } " and " { $link set } " words read and write variable values. The " { $link get } " word searches up the chain of nested namespaces, while " { $link set } " always sets variable values in the current namespace only. Namespaces are dynamically scoped; when a quotation is called from a nested scope, any words called by the quotation also execute in that scope." { $subsection get } diff --git a/core/parser/parser-docs.factor b/core/parser/parser-docs.factor index 92e5922802..625c1e9c43 100644 --- a/core/parser/parser-docs.factor +++ b/core/parser/parser-docs.factor @@ -1,78 +1,10 @@ USING: help.markup help.syntax kernel sequences words math strings vectors quotations generic effects classes vocabs.loader definitions io vocabs source-files -quotations namespaces compiler.units assocs lexer ; +quotations namespaces compiler.units assocs lexer +words.symbol words.alias words.constant vocabs.parser ; IN: parser -ARTICLE: "vocabulary-search-shadow" "Shadowing word names" -"If adding a vocabulary to the search path results in a word in another vocabulary becoming inaccessible due to the new vocabulary defining a word with the same name, we say that the old word has been " { $emphasis "shadowed" } "." -$nl -"Here is an example where shadowing occurs:" -{ $code - "IN: foe" - "USING: sequences io ;" - "" - ": append" - " \"foe::append calls sequences:append\" print append ;" - "" - "IN: fee" - "" - ": append" - " \"fee::append calls fee:append\" print append ;" - "" - "IN: fox" - "USE: foe" - "" - ": append" - " \"fox::append calls foe:append\" print append ;" - "" - "\"1234\" \"5678\" append print" - "" - "USE: fox" - "\"1234\" \"5678\" append print" -} -"When placed in a source file and run, the above code produces the following output:" -{ $code - "foe:append calls sequences:append" - "12345678" - "fee:append calls foe:append" - "foe:append calls sequences:append" - "12345678" -} -"The " { $vocab-link "qualified" } " vocabulary contains some tools for helping with shadowing." ; - -ARTICLE: "vocabulary-search-errors" "Word lookup errors" -"If the parser cannot not find a word in the current vocabulary search path, it attempts to look for the word in all loaded vocabularies." -$nl -"If " { $link auto-use? } " mode is off, a restartable error is thrown with a restart for each vocabulary in question, together with a restart which defers the word in the current vocabulary, as if " { $link POSTPONE: DEFER: } " was used." -$nl -"If " { $link auto-use? } " mode is on and only one vocabulary has a word with this name, the vocabulary is added to the search path and parsing continues." -$nl -"If any restarts were invoked, or if " { $link auto-use? } " is on, the parser will print the correct " { $link POSTPONE: USING: } " after parsing completes. This form can be copy and pasted back into the source file." -{ $subsection auto-use? } ; - -ARTICLE: "vocabulary-search" "Vocabulary search path" -"When the parser reads a token, it attempts to look up a word named by that token. The lookup is performed by searching each vocabulary in the search path, in order." -$nl -"For a source file the vocabulary search path starts off with one vocabulary:" -{ $code "syntax" } -"The " { $vocab-link "syntax" } " vocabulary consists of a set of parsing words for reading Factor data and defining new words." -$nl -"In the listener, the " { $vocab-link "scratchpad" } " is the default vocabulary for new word definitions. However, when loading source files, there is no default vocabulary. Defining words before declaring a vocabulary with " { $link POSTPONE: IN: } " results in an error." -$nl -"At the interactive listener, the default search path contains many more vocabularies. Details on the default search path and parser invocation are found in " { $link "parser" } "." -$nl -"Three parsing words deal with the vocabulary search path:" -{ $subsection POSTPONE: USE: } -{ $subsection POSTPONE: USING: } -{ $subsection POSTPONE: IN: } -"Private words can be defined; note that this is just a convention and they can be called from other vocabularies anyway:" -{ $subsection POSTPONE: } -{ $subsection "vocabulary-search-errors" } -{ $subsection "vocabulary-search-shadow" } -{ $see-also "words" "qualified" } ; - ARTICLE: "reading-ahead" "Reading ahead" "Parsing words can consume input:" { $subsection scan } diff --git a/core/parser/parser-tests.factor b/core/parser/parser-tests.factor index 6ddf299f7f..2870be9a4f 100644 --- a/core/parser/parser-tests.factor +++ b/core/parser/parser-tests.factor @@ -2,7 +2,8 @@ USING: arrays math parser tools.test kernel generic words io.streams.string namespaces classes effects source-files assocs sequences strings io.files io.pathnames definitions continuations sorting classes.tuple compiler.units debugger -vocabs vocabs.loader accessors eval combinators lexer ; +vocabs vocabs.loader accessors eval combinators lexer +vocabs.parser words.symbol ; IN: parser.tests \ run-file must-infer @@ -485,20 +486,73 @@ must-fail-with [ t ] [ "staging-problem-test-2" "parser.tests" lookup >boolean ] unit-test -[ "DEFER: blah" eval ] [ error>> error>> no-current-vocab? ] must-fail-with +[ "DEFER: blahy" eval ] [ error>> error>> no-current-vocab? ] must-fail-with [ - "IN: parser.tests : blah ; parsing FORGET: blah" eval + "IN: parser.tests : blahy ; parsing FORGET: blahy" eval ] [ error>> staging-violation? ] must-fail-with ! Bogus error message -DEFER: blah +DEFER: blahy -[ "IN: parser.tests USE: kernel TUPLE: blah < tuple ; : blah ; TUPLE: blah < tuple ; : blah ;" eval ] -[ error>> error>> def>> \ blah eq? ] must-fail-with +[ "IN: parser.tests USE: kernel TUPLE: blahy < tuple ; : blahy ; TUPLE: blahy < tuple ; : blahy ;" eval ] +[ error>> error>> def>> \ blahy eq? ] must-fail-with [ ] [ f lexer set f file set "Hello world" note. ] unit-test [ "CHAR: \\u9999999999999" eval ] must-fail + +SYMBOLS: a b c ; + +[ a ] [ a ] unit-test +[ b ] [ b ] unit-test +[ c ] [ c ] unit-test + +DEFER: blah + +[ ] [ "IN: parser.tests GENERIC: blah" eval ] unit-test +[ ] [ "IN: parser.tests SYMBOLS: blah ;" eval ] unit-test + +[ f ] [ \ blah generic? ] unit-test +[ t ] [ \ blah symbol? ] unit-test + +DEFER: blah1 + +[ "IN: parser.tests SINGLETONS: blah1 blah1 blah1 ;" eval ] +[ error>> error>> def>> \ blah1 eq? ] +must-fail-with + +IN: qualified.tests.foo +: x 1 ; +: y 5 ; +IN: qualified.tests.bar +: x 2 ; +: y 4 ; +IN: qualified.tests.baz +: x 3 ; + +QUALIFIED: qualified.tests.foo +QUALIFIED: qualified.tests.bar +[ 1 2 3 ] [ qualified.tests.foo:x qualified.tests.bar:x x ] unit-test + +QUALIFIED-WITH: qualified.tests.bar p +[ 2 ] [ p:x ] unit-test + +RENAME: x qualified.tests.baz => y +[ 3 ] [ y ] unit-test + +FROM: qualified.tests.baz => x ; +[ 3 ] [ x ] unit-test +[ 3 ] [ y ] unit-test + +EXCLUDE: qualified.tests.bar => x ; +[ 3 ] [ x ] unit-test +[ 4 ] [ y ] unit-test + +[ "IN: qualified.tests FROM: qualified.tests => doesnotexist ;" eval ] +[ error>> no-word-error? ] must-fail-with + +[ "IN: qualified.tests RENAME: doesnotexist qualified.tests => blahx" eval ] +[ error>> no-word-error? ] must-fail-with diff --git a/core/parser/parser.factor b/core/parser/parser.factor index 4586cfe34e..81ed91290c 100644 --- a/core/parser/parser.factor +++ b/core/parser/parser.factor @@ -1,11 +1,11 @@ ! Copyright (C) 2005, 2008 Slava Pestov. ! See http://factorcode.org/license.txt for BSD license. USING: arrays definitions generic assocs kernel math namespaces -sequences strings vectors words quotations io +sequences strings vectors words words.symbol quotations io combinators sorting splitting math.parser effects continuations io.files io.streams.string vocabs io.encodings.utf8 source-files classes hashtables compiler.errors compiler.units accessors sets -lexer ; +lexer vocabs.parser ; IN: parser : location ( -- loc ) @@ -29,27 +29,6 @@ t parser-notes set-global "Note: " write dup print ] when drop ; -SYMBOL: use -SYMBOL: in - -: (use+) ( vocab -- ) - vocab-words use get push ; - -: use+ ( vocab -- ) - load-vocab (use+) ; - -: add-use ( seq -- ) [ use+ ] each ; - -: set-use ( seq -- ) - [ vocab-words ] V{ } map-as sift use set ; - -: check-vocab-string ( name -- name ) - dup string? - [ "Vocabulary name must be a string" throw ] unless ; - -: set-in ( name -- ) - check-vocab-string dup in set create-vocab (use+) ; - M: parsing-word stack-effect drop (( parsed -- parsed )) ; TUPLE: no-current-vocab ; @@ -69,17 +48,6 @@ TUPLE: no-current-vocab ; : CREATE-WORD ( -- word ) CREATE dup reset-generic ; -: word-restarts ( name possibilities -- restarts ) - natural-sort - [ [ vocabulary>> "Use the " " vocabulary" surround ] keep ] { } map>assoc - swap "Defer word in current vocabulary" swap 2array - suffix ; - -ERROR: no-word-error name ; - -: ( name possibilities -- error restarts ) - [ drop \ no-word-error boa ] [ word-restarts ] 2bi ; - SYMBOL: amended-use SYMBOL: auto-use? diff --git a/core/syntax/syntax-docs.factor b/core/syntax/syntax-docs.factor index 7a1cb5fd92..36f427d5ad 100644 --- a/core/syntax/syntax-docs.factor +++ b/core/syntax/syntax-docs.factor @@ -1,7 +1,7 @@ USING: generic help.syntax help.markup kernel math parser words effects classes generic.standard classes.tuple generic.math generic.standard arrays io.pathnames vocabs.loader io sequences -assocs ; +assocs words.symbol words.alias words.constant ; IN: syntax ARTICLE: "parser-algorithm" "Parser algorithm" @@ -344,7 +344,41 @@ HELP: SYMBOL: { $description "Defines a new symbol word in the current vocabulary. Symbols push themselves on the stack when executed, and are used to identify variables (see " { $link "namespaces" } ") as well as for storing crufties in word properties (see " { $link "word-props" } ")." } { $examples { $example "USE: prettyprint" "IN: scratchpad" "SYMBOL: foo\nfoo ." "foo" } } ; -{ define-symbol POSTPONE: SYMBOL: } related-words +{ define-symbol POSTPONE: SYMBOL: POSTPONE: SYMBOLS: } related-words + +HELP: SYMBOLS: +{ $syntax "SYMBOLS: words... ;" } +{ $values { "words" "a sequence of new words to define" } } +{ $description "Creates a new symbol for every token until the " { $snippet ";" } "." } +{ $examples { $example "USING: prettyprint ;" "IN: scratchpad" "SYMBOLS: foo bar baz ;\nfoo . bar . baz ." "foo\nbar\nbaz" } } ; + +HELP: SINGLETONS: +{ $syntax "SINGLETONS: words... ;" } +{ $values { "words" "a sequence of new words to define" } } +{ $description "Creates a new singleton for every token until the " { $snippet ";" } "." } ; + +HELP: ALIAS: +{ $syntax "ALIAS: new-word existing-word" } +{ $values { "new-word" word } { "existing-word" word } } +{ $description "Creates a new inlined word that calls the existing word." } +{ $examples + { $example "USING: prettyprint sequences ;" + "IN: alias.test" + "ALIAS: sequence-nth nth" + "0 { 10 20 30 } sequence-nth ." + "10" + } +} ; + +{ define-alias POSTPONE: ALIAS: } related-words + +HELP: CONSTANT: +{ $syntax "CONSTANT: word value" } +{ $values { "word" word } { "value" object } } +{ $description "Creates a word which pushes a value on the stack." } +{ $examples { $code "CONSTANT: magic 1" "CONSTANT: science HEX: ff0f" } } ; + +{ define-constant POSTPONE: CONSTANT: } related-words HELP: \ { $syntax "\\ word" } @@ -376,6 +410,47 @@ HELP: USING: { $description "Adds a list of vocabularies to the front of the search path, with later vocabularies taking precedence." } { $errors "Throws an error if one of the vocabularies does not exist." } ; +HELP: QUALIFIED: +{ $syntax "QUALIFIED: vocab" } +{ $description "Similar to " { $link POSTPONE: USE: } " but loads vocabulary with prefix." } +{ $examples { $example + "USING: prettyprint ;" + "QUALIFIED: math" + "1 2 math:+ ." "3" +} } ; + +HELP: QUALIFIED-WITH: +{ $syntax "QUALIFIED-WITH: vocab word-prefix" } +{ $description "Works like " { $link POSTPONE: QUALIFIED: } " but uses " { $snippet "word-prefix" } " as prefix." } +{ $examples { $code + "USING: prettyprint ;" + "QUALIFIED-WITH: math m" + "1 2 m:+ ." + "3" +} } ; + +HELP: FROM: +{ $syntax "FROM: vocab => words ... ;" } +{ $description "Imports " { $snippet "words" } " from " { $snippet "vocab" } "." } +{ $examples { $code + "FROM: math.parser => bin> hex> ; ! imports only bin> and hex>" } } ; + +HELP: EXCLUDE: +{ $syntax "EXCLUDE: vocab => words ... ;" } +{ $description "Imports everything from " { $snippet "vocab" } " excluding " { $snippet "words" } "." } +{ $examples { $code + "EXCLUDE: math.parser => bin> hex> ; ! imports everything but bin> and hex>" } } ; + +HELP: RENAME: +{ $syntax "RENAME: word vocab => newname" } +{ $description "Imports " { $snippet "word" } " from " { $snippet "vocab" } ", but renamed to " { $snippet "newname" } "." } +{ $examples { $example + "USING: prettyprint ;" + "RENAME: + math => -" + "2 3 - ." + "5" +} } ; + HELP: IN: { $syntax "IN: vocabulary" } { $values { "vocabulary" "a new vocabulary name" } } diff --git a/core/syntax/syntax.factor b/core/syntax/syntax.factor index 9640aa9275..c81fc9201e 100644 --- a/core/syntax/syntax.factor +++ b/core/syntax/syntax.factor @@ -2,12 +2,13 @@ ! See http://factorcode.org/license.txt for BSD license. USING: accessors alien arrays byte-arrays definitions generic hashtables kernel math namespaces parser lexer sequences strings -strings.parser sbufs vectors words quotations io assocs -splitting classes.tuple generic.standard generic.math -generic.parser classes io.pathnames vocabs classes.parser -classes.union classes.intersection classes.mixin -classes.predicate classes.singleton classes.tuple.parser -compiler.units combinators effects.parser slots ; +strings.parser sbufs vectors words words.symbol words.constant +words.alias quotations io assocs splitting classes.tuple +generic.standard generic.math generic.parser classes +io.pathnames vocabs vocabs.parser classes.parser classes.union +classes.intersection classes.mixin classes.predicate +classes.singleton classes.tuple.parser compiler.units +combinators effects.parser slots ; IN: bootstrap.syntax ! These words are defined as a top-level form, instead of with @@ -22,7 +23,8 @@ IN: bootstrap.syntax "syntax" lookup t "delimiter" set-word-prop ; : define-syntax ( name quot -- ) - [ "syntax" lookup dup ] dip define make-parsing ; + [ dup "syntax" lookup [ dup ] [ no-word-error ] ?if ] dip + define make-parsing ; [ { "]" "}" ";" ">>" } [ define-delimiter ] each @@ -51,6 +53,22 @@ IN: bootstrap.syntax "USING:" [ ";" parse-tokens add-use ] define-syntax + "QUALIFIED:" [ scan dup add-qualified ] define-syntax + + "QUALIFIED-WITH:" [ scan scan add-qualified ] define-syntax + + "FROM:" [ + scan "=>" expect ";" parse-tokens swap add-words-from + ] define-syntax + + "EXCLUDE:" [ + scan "=>" expect ";" parse-tokens swap add-words-excluding + ] define-syntax + + "RENAME:" [ + scan scan "=>" expect scan add-renamed-word + ] define-syntax + "HEX:" [ 16 parse-base ] define-syntax "OCT:" [ 8 parse-base ] define-syntax "BIN:" [ 2 parse-base ] define-syntax @@ -97,6 +115,24 @@ IN: bootstrap.syntax CREATE-WORD define-symbol ] define-syntax + "SYMBOLS:" [ + ";" parse-tokens + [ create-in dup reset-generic define-symbol ] each + ] define-syntax + + "SINGLETONS:" [ + ";" parse-tokens + [ create-class-in define-singleton-class ] each + ] define-syntax + + "ALIAS:" [ + CREATE-WORD scan-word define-alias + ] define-syntax + + "CONSTANT:" [ + CREATE scan-object define-constant + ] define-syntax + "DEFER:" [ scan current-vocab create dup old-definitions get [ delete-at ] with each diff --git a/core/vocabs/loader/loader-tests.factor b/core/vocabs/loader/loader-tests.factor index 533bea76fc..57bc824f59 100644 --- a/core/vocabs/loader/loader-tests.factor +++ b/core/vocabs/loader/loader-tests.factor @@ -3,7 +3,7 @@ USING: vocabs.loader tools.test continuations vocabs math kernel arrays sequences namespaces io.streams.string parser source-files words assocs classes.tuple definitions debugger compiler.units tools.vocabs accessors eval -combinators ; +combinators vocabs.parser ; ! This vocab should not exist, but just in case... [ ] [ diff --git a/core/vocabs/parser/authors.txt b/core/vocabs/parser/authors.txt new file mode 100644 index 0000000000..3095b9b26c --- /dev/null +++ b/core/vocabs/parser/authors.txt @@ -0,0 +1,3 @@ +Daniel Ehrenberg +Bruno Deferrari +Slava Pestov diff --git a/core/vocabs/parser/parser-docs.factor b/core/vocabs/parser/parser-docs.factor new file mode 100644 index 0000000000..71862402cd --- /dev/null +++ b/core/vocabs/parser/parser-docs.factor @@ -0,0 +1,80 @@ +USING: help.markup help.syntax parser ; +IN: vocabs.parser + +ARTICLE: "vocabulary-search-shadow" "Shadowing word names" +"If adding a vocabulary to the search path results in a word in another vocabulary becoming inaccessible due to the new vocabulary defining a word with the same name, we say that the old word has been " { $emphasis "shadowed" } "." +$nl +"Here is an example where shadowing occurs:" +{ $code + "IN: foe" + "USING: sequences io ;" + "" + ": append" + " \"foe::append calls sequences:append\" print append ;" + "" + "IN: fee" + "" + ": append" + " \"fee::append calls fee:append\" print append ;" + "" + "IN: fox" + "USE: foe" + "" + ": append" + " \"fox::append calls foe:append\" print append ;" + "" + "\"1234\" \"5678\" append print" + "" + "USE: fox" + "\"1234\" \"5678\" append print" +} +"When placed in a source file and run, the above code produces the following output:" +{ $code + "foe:append calls sequences:append" + "12345678" + "fee:append calls foe:append" + "foe:append calls sequences:append" + "12345678" +} ; + +ARTICLE: "vocabulary-search-errors" "Word lookup errors" +"If the parser cannot not find a word in the current vocabulary search path, it attempts to look for the word in all loaded vocabularies." +$nl +"If " { $link auto-use? } " mode is off, a restartable error is thrown with a restart for each vocabulary in question, together with a restart which defers the word in the current vocabulary, as if " { $link POSTPONE: DEFER: } " was used." +$nl +"If " { $link auto-use? } " mode is on and only one vocabulary has a word with this name, the vocabulary is added to the search path and parsing continues." +$nl +"If any restarts were invoked, or if " { $link auto-use? } " is on, the parser will print the correct " { $link POSTPONE: USING: } " after parsing completes. This form can be copy and pasted back into the source file." +{ $subsection auto-use? } ; + +ARTICLE: "vocabulary-search" "Vocabulary search path" +"When the parser reads a token, it attempts to look up a word named by that token. The lookup is performed by searching each vocabulary in the search path, in order." +$nl +"For a source file the vocabulary search path starts off with one vocabulary:" +{ $code "syntax" } +"The " { $vocab-link "syntax" } " vocabulary consists of a set of parsing words for reading Factor data and defining new words." +$nl +"In the listener, the " { $vocab-link "scratchpad" } " is the default vocabulary for new word definitions. However, when loading source files, there is no default vocabulary. Defining words before declaring a vocabulary with " { $link POSTPONE: IN: } " results in an error." +$nl +"At the interactive listener, the default search path contains many more vocabularies. Details on the default search path and parser invocation are found in " { $link "parser" } "." +$nl +"Three parsing words deal with the vocabulary search path:" +{ $subsection POSTPONE: IN: } +{ $subsection POSTPONE: USE: } +{ $subsection POSTPONE: USING: } +"There are some additional parsing words give more control over word lookup than is offered by " { $link POSTPONE: USE: } " and " { $link POSTPONE: USING: } ":" +{ $subsection POSTPONE: QUALIFIED: } +{ $subsection POSTPONE: QUALIFIED-WITH: } +{ $subsection POSTPONE: FROM: } +{ $subsection POSTPONE: EXCLUDE: } +{ $subsection POSTPONE: RENAME: } +"These words are useful when there is no way to avoid using two vocabularies with identical word names in the same source file." +$nl +"Private words can be defined; note that this is just a convention and they can be called from other vocabularies anyway:" +{ $subsection POSTPONE: } +{ $subsection "vocabulary-search-errors" } +{ $subsection "vocabulary-search-shadow" } +{ $see-also "words" } ; + +ABOUT: "vocabulary-search" diff --git a/core/vocabs/parser/parser.factor b/core/vocabs/parser/parser.factor new file mode 100644 index 0000000000..35feae34bb --- /dev/null +++ b/core/vocabs/parser/parser.factor @@ -0,0 +1,59 @@ +! Copyright (C) 2007, 2008 Daniel Ehrenberg, Bruno Deferrari, +! Slava Pestov. +! See http://factorcode.org/license.txt for BSD license. +USING: assocs hashtables kernel namespaces sequences +sets strings vocabs sorting accessors arrays ; +IN: vocabs.parser + +ERROR: no-word-error name ; + +: word-restarts ( name possibilities -- restarts ) + natural-sort + [ [ vocabulary>> "Use the " " vocabulary" surround ] keep ] { } map>assoc + swap "Defer word in current vocabulary" swap 2array + suffix ; + +: ( name possibilities -- error restarts ) + [ drop \ no-word-error boa ] [ word-restarts ] 2bi ; + +SYMBOL: use +SYMBOL: in + +: (use+) ( vocab -- ) + vocab-words use get push ; + +: use+ ( vocab -- ) + load-vocab (use+) ; + +: add-use ( seq -- ) [ use+ ] each ; + +: set-use ( seq -- ) + [ vocab-words ] V{ } map-as sift use set ; + +: add-qualified ( vocab prefix -- ) + [ load-vocab vocab-words ] [ CHAR: : suffix ] bi* + [ swap [ prepend ] dip ] curry assoc-map + use get push ; + +: partial-vocab ( words vocab -- assoc ) + load-vocab vocab-words + [ dupd at [ no-word-error ] unless* ] curry { } map>assoc ; + +: add-words-from ( words vocab -- ) + partial-vocab use get push ; + +: partial-vocab-excluding ( words vocab -- assoc ) + load-vocab [ vocab-words keys swap diff ] keep partial-vocab ; + +: add-words-excluding ( words vocab -- ) + partial-vocab-excluding use get push ; + +: add-renamed-word ( word vocab new-name -- ) + [ load-vocab vocab-words dupd at [ ] [ no-word-error ] ?if ] dip + associate use get push ; + +: check-vocab-string ( name -- name ) + dup string? [ "Vocabulary name must be a string" throw ] unless ; + +: set-in ( name -- ) + check-vocab-string dup in set create-vocab (use+) ; diff --git a/core/words/alias/alias-docs.factor b/core/words/alias/alias-docs.factor new file mode 100644 index 0000000000..d5696479cc --- /dev/null +++ b/core/words/alias/alias-docs.factor @@ -0,0 +1,12 @@ +USING: help.markup help.syntax words.alias ; +IN: words.alias + +ARTICLE: "words.alias" "Word aliasing" +"There is a syntax for defining new names for existing words. This useful for C library bindings, for example in the Win32 API, where words need to be renamed for symmetry." +$nl +"Define a new word that aliases another word:" +{ $subsection POSTPONE: ALIAS: } +"Define an alias at run-time:" +{ $subsection define-alias } ; + +ABOUT: "words.alias" diff --git a/core/words/alias/alias.factor b/core/words/alias/alias.factor new file mode 100644 index 0000000000..0615e8333e --- /dev/null +++ b/core/words/alias/alias.factor @@ -0,0 +1,16 @@ +! Copyright (C) 2008 Doug Coleman. +! See http://factorcode.org/license.txt for BSD license. +USING: quotations effects accessors sequences words kernel ; +IN: words.alias + +PREDICATE: alias < word "alias" word-prop ; + +: define-alias ( new old -- ) + [ [ 1quotation ] [ stack-effect ] bi define-inline ] + [ drop t "alias" set-word-prop ] 2bi ; + +M: alias reset-word + [ call-next-method ] [ f "alias" set-word-prop ] bi ; + +M: alias stack-effect + def>> first stack-effect ; diff --git a/core/words/alias/authors.txt b/core/words/alias/authors.txt new file mode 100644 index 0000000000..1901f27a24 --- /dev/null +++ b/core/words/alias/authors.txt @@ -0,0 +1 @@ +Slava Pestov diff --git a/core/words/alias/summary.txt b/core/words/alias/summary.txt new file mode 100644 index 0000000000..15690a7b9b --- /dev/null +++ b/core/words/alias/summary.txt @@ -0,0 +1 @@ +Defining multiple words with the same name diff --git a/core/words/constant/constant.factor b/core/words/constant/constant.factor new file mode 100644 index 0000000000..43b7f37599 --- /dev/null +++ b/core/words/constant/constant.factor @@ -0,0 +1,10 @@ +! Copyright (C) 2008 Slava Pestov. +! See http://factorcode.org/license.txt for BSD license. +USING: accessors kernel sequences words ; +IN: words.constant + +PREDICATE: constant < word ( obj -- ? ) + def>> dup length 1 = [ first word? not ] [ drop f ] if ; + +: define-constant ( word value -- ) + [ ] curry (( -- value )) define-inline ; diff --git a/core/words/symbol/symbol-docs.factor b/core/words/symbol/symbol-docs.factor new file mode 100644 index 0000000000..1fcba9a3e2 --- /dev/null +++ b/core/words/symbol/symbol-docs.factor @@ -0,0 +1,28 @@ +USING: help.syntax help.markup words.symbol words compiler.units ; +IN: words.symbol + +HELP: symbol +{ $description "The class of symbols created by " { $link POSTPONE: SYMBOL: } "." } ; + +HELP: define-symbol +{ $values { "word" word } } +{ $description "Defines the word to push itself on the stack when executed. This is the run time equivalent of " { $link POSTPONE: SYMBOL: } "." } +{ $notes "This word must be called from inside " { $link with-compilation-unit } "." } +{ $side-effects "word" } ; + +ARTICLE: "words.symbol" "Symbols" +"A symbol pushes itself on the stack when executed. By convention, symbols are used as variable names (" { $link "namespaces" } ")." +{ $subsection symbol } +{ $subsection symbol? } +"Defining symbols at parse time:" +{ $subsection POSTPONE: SYMBOL: } +{ $subsection POSTPONE: SYMBOLS: } +"Defining symbols at run time:" +{ $subsection define-symbol } +"Symbols are just compound definitions in disguise. The following two lines are equivalent:" +{ $code + "SYMBOL: foo" + ": foo ( -- value ) \\ foo ;" +} ; + +ABOUT: "words.symbol" diff --git a/core/words/symbol/symbol.factor b/core/words/symbol/symbol.factor new file mode 100644 index 0000000000..a107808eec --- /dev/null +++ b/core/words/symbol/symbol.factor @@ -0,0 +1,15 @@ +! Copyright (C) 2008 Slava Pestov. +! See http://factorcode.org/license.txt for BSD license. +USING: kernel sequences accessors definitions +words words.constant ; +IN: words.symbol + +PREDICATE: symbol < constant ( obj -- ? ) + [ def>> ] [ [ ] curry ] bi sequence= ; + +M: symbol definer drop \ SYMBOL: f ; + +M: symbol definition drop f ; + +: define-symbol ( word -- ) + dup define-constant ; diff --git a/core/words/words-docs.factor b/core/words/words-docs.factor index 389f16c68e..764df9924c 100644 --- a/core/words/words-docs.factor +++ b/core/words/words-docs.factor @@ -33,21 +33,7 @@ $nl { $subsection define-inline } "Word definitions should declare their stack effect, unless the definition is completely trivial. See " { $link "effect-declaration" } "." $nl -"All other types of word definitions, such as " { $link "symbols" } " and " { $link "generic" } ", are just special cases of the above." ; - -ARTICLE: "symbols" "Symbols" -"A symbol pushes itself on the stack when executed. By convention, symbols are used as variable names (" { $link "namespaces" } ")." -{ $subsection symbol } -{ $subsection symbol? } -"Defining symbols at parse time:" -{ $subsection POSTPONE: SYMBOL: } -"Defining symbols at run time:" -{ $subsection define-symbol } -"Symbols are just compound definitions in disguise. The following two lines are equivalent:" -{ $code - "SYMBOL: foo" - ": foo \\ foo ;" -} ; +"All other types of word definitions, such as " { $link "words.symbol" } " and " { $link "generic" } ", are just special cases of the above." ; ARTICLE: "primitives" "Primitives" "Primitives are words defined in the Factor VM. They provide the essential low-level services to the rest of the system." @@ -91,7 +77,8 @@ ARTICLE: "word-definition" "Defining words" } "The latter is a more dynamic feature that can be used to implement code generation and such, and in fact parse time defining words are implemented in terms of run time defining words." { $subsection "colon-definition" } -{ $subsection "symbols" } +{ $subsection "words.symbol" } +{ $subsection "words.alias" } { $subsection "primitives" } { $subsection "deferred" } { $subsection "declarations" } @@ -193,9 +180,6 @@ HELP: deferred HELP: primitive { $description "The class of primitive words." } ; -HELP: symbol -{ $description "The class of symbols created by " { $link POSTPONE: SYMBOL: } "." } ; - HELP: word-prop { $values { "word" word } { "name" "a property name" } { "value" "a property value" } } { $description "Retrieves a word property. Word property names are conventionally strings." } ; @@ -214,12 +198,6 @@ HELP: word-xt ( word -- start end ) { $values { "word" word } { "start" "the word's start address" } { "end" "the word's end address" } } { $description "Outputs the machine code address of the word's definition." } ; -HELP: define-symbol -{ $values { "word" word } } -{ $description "Defines the word to push itself on the stack when executed. This is the run time equivalent of " { $link POSTPONE: SYMBOL: } "." } -{ $notes "This word must be called from inside " { $link with-compilation-unit } "." } -{ $side-effects "word" } ; - HELP: define { $values { "word" word } { "def" quotation } } { $description "Defines the word to call a quotation when executed. This is the run time equivalent of " { $link POSTPONE: : } "." } diff --git a/core/words/words-tests.factor b/core/words/words-tests.factor index 09ebcb6b77..10c17a0e79 100644 --- a/core/words/words-tests.factor +++ b/core/words/words-tests.factor @@ -1,7 +1,7 @@ USING: arrays generic assocs kernel math namespaces sequences tools.test words definitions parser quotations vocabs continuations classes.tuple compiler.units -io.streams.string accessors eval ; +io.streams.string accessors eval words.symbol ; IN: words.tests [ 4 ] [ diff --git a/core/words/words.factor b/core/words/words.factor index f0beab1809..c75711ea39 100644 --- a/core/words/words.factor +++ b/core/words/words.factor @@ -28,11 +28,6 @@ PREDICATE: deferred < word ( obj -- ? ) M: deferred definer drop \ DEFER: f ; M: deferred definition drop f ; -PREDICATE: symbol < word ( obj -- ? ) - [ def>> ] [ [ ] curry ] bi sequence= ; -M: symbol definer drop \ SYMBOL: f ; -M: symbol definition drop f ; - PREDICATE: primitive < word ( obj -- ? ) [ def>> [ do-primitive ] tail? ] [ sub-primitive>> >boolean ] @@ -195,9 +190,6 @@ SYMBOL: visited : define-inline ( word def effect -- ) [ define-declared ] [ 2drop make-inline ] 3bi ; -: define-symbol ( word -- ) - dup [ ] curry (( -- word )) define-inline ; - GENERIC: reset-word ( word -- ) M: word reset-word diff --git a/extra/advice/advice.factor b/extra/advice/advice.factor index 383812e602..fbdfa9c66b 100644 --- a/extra/advice/advice.factor +++ b/extra/advice/advice.factor @@ -1,6 +1,6 @@ ! Copyright (C) 2008 James Cash ! See http://factorcode.org/license.txt for BSD license. -USING: kernel sequences symbols fry words assocs linked-assocs tools.annotations +USING: kernel sequences fry words assocs linked-assocs tools.annotations coroutines lexer parser quotations arrays namespaces continuations ; IN: advice diff --git a/extra/assoc-heaps/assoc-heaps-docs.factor b/extra/assoc-heaps/assoc-heaps-docs.factor deleted file mode 100644 index b148995cb8..0000000000 --- a/extra/assoc-heaps/assoc-heaps-docs.factor +++ /dev/null @@ -1,32 +0,0 @@ -! Copyright (C) 2008 Doug Coleman. -! See http://factorcode.org/license.txt for BSD license. -USING: help.markup help.syntax io.streams.string assocs -heaps.private ; -IN: assoc-heaps - -HELP: -{ $values { "assoc" assoc } { "heap" heap } { "assoc-heap" assoc-heap } } -{ $description "Constructs a new " { $link assoc-heap } " from two existing data structures." } ; - -HELP: -{ $values { "unique-heap" assoc-heap } } -{ $description "Creates a new " { $link assoc-heap } " where the assoc is a hashtable and the heap is a max-heap. Popping an element from the heap leaves this element in the hashtable to ensure that the element will not be processed again." } ; - -HELP: -{ $values { "unique-heap" assoc-heap } } -{ $description "Creates a new " { $link assoc-heap } " where the assoc is a hashtable and the heap is a min-heap. Popping an element from the heap leaves this element in the hashtable to ensure that the element will not be processed again." } ; - -{ } related-words - -HELP: assoc-heap -{ $description "A data structure containing an assoc and a heap to get certain properties with better time constraints at the expense of more space and complexity. For instance, a hashtable and a heap can be combined into one assoc-heap to get a sorted data structure with O(1) lookup. Operations on assoc-heap may update both the assoc and the heap or leave them out of sync if it's advantageous." } ; - -ARTICLE: "assoc-heaps" "Associative heaps" -"The " { $vocab-link "assoc-heaps" } " vocabulary combines exists to synthesize data structures with better time properties than either of the two component data structures alone." $nl -"Associative heap constructor:" -{ $subsection } -"Unique heaps:" -{ $subsection } -{ $subsection } ; - -ABOUT: "assoc-heaps" diff --git a/extra/assoc-heaps/assoc-heaps-tests.factor b/extra/assoc-heaps/assoc-heaps-tests.factor deleted file mode 100644 index 6ea3fe14a4..0000000000 --- a/extra/assoc-heaps/assoc-heaps-tests.factor +++ /dev/null @@ -1,4 +0,0 @@ -! Copyright (C) 2008 Doug Coleman. -! See http://factorcode.org/license.txt for BSD license. -USING: tools.test assoc-heaps ; -IN: assoc-heaps.tests diff --git a/extra/assoc-heaps/assoc-heaps.factor b/extra/assoc-heaps/assoc-heaps.factor deleted file mode 100644 index a495aed626..0000000000 --- a/extra/assoc-heaps/assoc-heaps.factor +++ /dev/null @@ -1,30 +0,0 @@ -! Copyright (C) 2008 Doug Coleman. -! See http://factorcode.org/license.txt for BSD license. -USING: accessors assocs hashtables heaps kernel ; -IN: assoc-heaps - -TUPLE: assoc-heap assoc heap ; - -C: assoc-heap - -: ( -- unique-heap ) - H{ } clone ; - -: ( -- unique-heap ) - H{ } clone ; - -M: assoc-heap heap-push* ( value key assoc-heap -- entry ) - pick over assoc>> key? [ - 3drop f - ] [ - [ assoc>> swapd set-at ] [ heap>> heap-push* ] 3bi - ] if ; - -M: assoc-heap heap-pop ( assoc-heap -- value key ) - heap>> heap-pop ; - -M: assoc-heap heap-peek ( assoc-heap -- value key ) - heap>> heap-peek ; - -M: assoc-heap heap-empty? ( assoc-heap -- value key ) - heap>> heap-empty? ; diff --git a/extra/assoc-heaps/authors.txt b/extra/assoc-heaps/authors.txt deleted file mode 100644 index b4bd0e7b35..0000000000 --- a/extra/assoc-heaps/authors.txt +++ /dev/null @@ -1 +0,0 @@ -Doug Coleman \ No newline at end of file diff --git a/extra/assocs/lib/authors.txt b/extra/assocs/lib/authors.txt deleted file mode 100644 index 6cfd5da273..0000000000 --- a/extra/assocs/lib/authors.txt +++ /dev/null @@ -1 +0,0 @@ -Eduardo Cavazos diff --git a/extra/assocs/lib/lib-tests.factor b/extra/assocs/lib/lib-tests.factor deleted file mode 100644 index c7e1aa4fbf..0000000000 --- a/extra/assocs/lib/lib-tests.factor +++ /dev/null @@ -1,17 +0,0 @@ -USING: kernel tools.test sequences vectors assocs.lib ; -IN: assocs.lib.tests - -{ 1 1 } [ [ ?push ] histogram ] must-infer-as - -! substitute -[ { 2 } ] [ { 1 } H{ { 1 2 } } [ ?at drop ] curry map ] unit-test -[ { 3 } ] [ { 3 } H{ { 1 2 } } [ ?at drop ] curry map ] unit-test - -[ 2 ] [ 1 H{ { 1 2 } } [ ] [ ] if-at ] unit-test -[ 3 ] [ 3 H{ { 1 2 } } [ ] [ ] if-at ] unit-test - -[ "hi" ] [ 1 H{ { 1 2 } } [ drop "hi" ] when-at ] unit-test -[ 3 ] [ 3 H{ { 1 2 } } [ drop "hi" ] when-at ] unit-test -[ 2 ] [ 1 H{ { 1 2 } } [ drop "hi" ] unless-at ] unit-test -[ "hi" ] [ 3 H{ { 1 2 } } [ drop "hi" ] unless-at ] unit-test - diff --git a/extra/assocs/lib/lib.factor b/extra/assocs/lib/lib.factor deleted file mode 100755 index f1b018f54e..0000000000 --- a/extra/assocs/lib/lib.factor +++ /dev/null @@ -1,49 +0,0 @@ -USING: arrays assocs kernel vectors sequences namespaces - random math.parser math fry ; - -IN: assocs.lib - -: set-assoc-stack ( value key seq -- ) - dupd [ key? ] with find-last nip set-at ; - -: at-default ( key assoc -- value/key ) - dupd at [ nip ] when* ; - -: replace-at ( assoc value key -- assoc ) - [ dupd 1vector ] dip rot set-at ; - -: peek-at* ( assoc key -- obj ? ) - swap at* dup [ [ peek ] dip ] when ; - -: peek-at ( assoc key -- obj ) - peek-at* drop ; - -: >multi-assoc ( assoc -- new-assoc ) - [ 1vector ] assoc-map ; - -: multi-assoc-each ( assoc quot -- ) - [ with each ] curry assoc-each ; inline - -: insert ( value variable -- ) namespace push-at ; - -: generate-key ( assoc -- str ) - [ 32 random-bits >hex ] dip - 2dup key? [ nip generate-key ] [ drop ] if ; - -: set-at-unique ( value assoc -- key ) - dup generate-key [ swap set-at ] keep ; - -: histogram ( assoc quot -- assoc' ) - H{ } clone [ - swap [ change-at ] 2curry assoc-each - ] keep ; inline - -: ?at ( obj assoc -- value/obj ? ) - dupd at* [ [ nip ] [ drop ] if ] keep ; - -: if-at ( obj assoc quot1 quot2 -- ) - [ ?at ] 2dip if ; inline - -: when-at ( obj assoc quot -- ) [ ] if-at ; inline - -: unless-at ( obj assoc quot -- ) [ ] swap if-at ; inline diff --git a/extra/assocs/lib/summary.txt b/extra/assocs/lib/summary.txt deleted file mode 100644 index 24c282540c..0000000000 --- a/extra/assocs/lib/summary.txt +++ /dev/null @@ -1 +0,0 @@ -Non-core assoc words diff --git a/extra/assocs/lib/tags.txt b/extra/assocs/lib/tags.txt deleted file mode 100644 index 42d711b32b..0000000000 --- a/extra/assocs/lib/tags.txt +++ /dev/null @@ -1 +0,0 @@ -collections diff --git a/extra/automata/ui/ui.factor b/extra/automata/ui/ui.factor index 9210097cab..def71e7e67 100644 --- a/extra/automata/ui/ui.factor +++ b/extra/automata/ui/ui.factor @@ -15,7 +15,7 @@ USING: kernel namespaces math quotations arrays hashtables sequences threads ui.gadgets.theme ui.gadgets.handler accessors - namespaces.lib assocs.lib vars + vars fry rewrite-closures automata math.geometry.rect newfx ; IN: automata.ui @@ -24,9 +24,9 @@ IN: automata.ui : draw-point ( y x value -- ) 1 = [ swap glVertex2i ] [ 2drop ] if ; -: draw-line ( y line -- ) 0 swap [ >r 2dup r> draw-point 1+ ] each 2drop ; +: draw-line ( y line -- ) 0 swap [ [ 2dup ] dip draw-point 1+ ] each 2drop ; -: (draw-bitmap) ( bitmap -- ) 0 swap [ >r dup r> draw-line 1+ ] each drop ; +: (draw-bitmap) ( bitmap -- ) 0 swap [ [ dup ] dip draw-line 1+ ] each drop ; : draw-bitmap ( bitmap -- ) GL_POINTS glBegin (draw-bitmap) glEnd ; @@ -46,9 +46,9 @@ VAR: slate ! Create a quotation that is appropriate for buttons and gesture handler. -: view-action ( quot -- quot ) [ drop [ ] with-view ] make* closed-quot ; +: view-action ( quot -- quot ) '[ drop _ with-view ] closed-quot ; -: view-button ( label quot -- ) >r