annotate src/ur/feed.urs @ 5:2717458d8951
Splitting fetching and traversal into separate functions
author |
Adam Chlipala <adam@chlipala.net> |
date |
Thu, 13 Jan 2011 10:02:37 -0500 |
parents |
af95d9d73eb5 |
children |
e0bae488825c |
rev |
line source |
adam@1
|
1 con pattern :: Type -> Type -> Type
|
adam@1
|
2
|
adam@1
|
3 con tagInternal :: {Unit} -> Type
|
adam@1
|
4
|
adam@4
|
5 val null : pattern unit (variant [])
|
adam@4
|
6
|
adam@1
|
7 val tag : attrs ::: {Unit} -> folder attrs -> string -> $(mapU string attrs)
|
adam@1
|
8 -> pattern (tagInternal attrs) {Attrs : $(mapU string attrs), Cdata : option string}
|
adam@1
|
9
|
adam@3
|
10 val tagA : attrs ::: {Unit} -> folder attrs -> string -> $(mapU string attrs)
|
adam@3
|
11 -> pattern (tagInternal attrs) $(mapU string attrs)
|
adam@3
|
12 val tagC : string -> pattern (tagInternal []) string
|
adam@3
|
13
|
adam@1
|
14 con childrenInternal :: Type -> {Type} -> Type
|
adam@1
|
15
|
adam@1
|
16 val children : parentI ::: Type -> parent ::: Type -> children ::: {(Type * Type)}
|
adam@1
|
17 -> pattern parentI parent -> $(map (fn (i, d) => pattern i d) children) -> folder children
|
adam@1
|
18 -> pattern (childrenInternal parentI (map fst children)) (parent * $(map snd children))
|
adam@1
|
19
|
adam@4
|
20 con treeInternal :: Type -> Type -> Type
|
adam@4
|
21
|
adam@4
|
22 val tree : parentI ::: Type -> parent ::: Type -> childI ::: Type -> child ::: Type
|
adam@4
|
23 -> pattern parentI parent -> pattern childI child
|
adam@4
|
24 -> pattern (treeInternal parentI childI) (parent * child)
|
adam@4
|
25
|
adam@5
|
26 type document
|
adam@5
|
27
|
adam@5
|
28 val fetch : string (* url *) -> transaction document
|
adam@5
|
29 val app : internal ::: Type -> data ::: Type -> pattern internal data -> (data -> transaction {}) -> document -> transaction {}
|