I create simple logic library for parsing text (part of this library in archive by link below). But execution time of parsing text using it is very painful.

Library contain LChar module that translate some function of original Char module to nondetermistik variant, LList module - similary to List and String module that incapsulate some string-specific operations - all in nondeterministik way. main.oz file contain simple use case of library - parsing the text such "attr_name attribute values" to record property("attr_name", "attribute values"). And such simple example work 35 second on my machine! After I replace the realisation of Char module by content in char1.oz file, the time grow short to 25 second. I think that problem in All procedure in LList module:

proc {All List Predicate Result}
     choice
    List = nil Result = false
     [] X in List = X|nil {Predicate X true} Result=true
     [] X in List = X|nil {Predicate X false} Result=false
     [] X T in
    X|T=List
    {Predicate X true}
    {All T Predicate true}
    Result=true
     [] X T in
    X|T=List
    {Predicate X false}
    Result = false
     end
  end

This predicate bind Result to true if all members of list obey to Predicate and false if exist one or more members that not.

Archive with example: http://www.4shared.com/file/120658649/438bf6be/logic.html

_________________________________________________________________________________
mozart-users mailing list                               
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users

Reply via email to