# HG changeset patch # User Adam Chlipala # Date 1294930957 18000 # Node ID 2717458d895104f52b3dfc3f9567c4e3064d7150 # Parent af95d9d73eb59f440a2c7af994dbab8166ae2d58 Splitting fetching and traversal into separate functions diff -r af95d9d73eb5 -r 2717458d8951 src/ur/feed.ur --- a/src/ur/feed.ur Tue Jan 11 18:04:15 2011 -0500 +++ b/src/ur/feed.ur Thu Jan 13 10:02:37 2011 -0500 @@ -177,7 +177,11 @@ None => None | Some (cdata, _) => Some ((pdata, cdata), True)} -fun app [internal ::: Type] [data ::: Type] (p : pattern internal data) (f : data -> transaction {}) (url : string) : transaction {} = +type document = string + +val fetch = FeedFfi.fetch + +fun app [internal ::: Type] [data ::: Type] (p : pattern internal data) (f : data -> transaction {}) (doc : document) : transaction {} = let fun recur xml state = case String.seek xml #"<" of @@ -305,6 +309,5 @@ recur xml (if cont then state else p.Initial) end in - xml <- FeedFfi.fetch url; - recur xml p.Initial + recur doc p.Initial end diff -r af95d9d73eb5 -r 2717458d8951 src/ur/feed.urs --- a/src/ur/feed.urs Tue Jan 11 18:04:15 2011 -0500 +++ b/src/ur/feed.urs Thu Jan 13 10:02:37 2011 -0500 @@ -23,4 +23,7 @@ -> pattern parentI parent -> pattern childI child -> pattern (treeInternal parentI childI) (parent * child) -val app : internal ::: Type -> data ::: Type -> pattern internal data -> (data -> transaction {}) -> string -> transaction {} +type document + +val fetch : string (* url *) -> transaction document +val app : internal ::: Type -> data ::: Type -> pattern internal data -> (data -> transaction {}) -> document -> transaction {}