: startsWith? ( $1 $2 - f ) withLength &swap dip 0 swap ^strings'getSubset compare ; "abcdefghijkl" "abcde" startsWith? "abcdefghijkl" "bcd" startsWith? "abcdefghijkl" "bcd" ^strings'search "abcdefghijkl" "zmq" ^strings'search : endsWith? ( $1 $2 - f ) swap withLength + over getLength - compare ; "abcdefghijkl" "ijkl" endsWith? "abcdefghijkl" "abc" endsWith?