|
|
1.1 ! root 1: (* Copyright 1989 by AT&T Bell Laboratories *) ! 2: (* namespace.sml *) ! 3: ! 4: structure NameSpace: NAMESPACE = ! 5: struct ! 6: ! 7: open Symbol ! 8: ! 9: (* there are 7 namespaces, numbered 0 to 6 *) ! 10: val namespaces = 7 ! 11: val varSpace = 0 ! 12: val tycSpace = 1 ! 13: val tyvSpace = 2 ! 14: val sigSpace = 3 ! 15: val strSpace = 4 ! 16: val fctSpace = 5 ! 17: val fixSpace = 6 ! 18: ! 19: fun varIndex(id: symbol) = number(id)*namespaces ! 20: fun conIndex(id: symbol) = number(id)*namespaces ! 21: fun tycIndex(id: symbol) = number(id)*namespaces+1 ! 22: fun tyvIndex(id: symbol) = number(id)*namespaces+2 ! 23: fun sigIndex(id: symbol) = number(id)*namespaces+3 ! 24: fun strIndex(id: symbol) = number(id)*namespaces+4 ! 25: fun fctIndex(id: symbol) = number(id)*namespaces+5 ! 26: fun fixIndex(id: symbol) = number(id)*namespaces+6 ! 27: ! 28: fun varKey(id: symbol) = (number(id)*namespaces, name(id)) ! 29: fun conKey(id: symbol) = (number(id)*namespaces, name(id)) ! 30: fun tycKey(id: symbol) = (number(id)*namespaces+1, name(id)) ! 31: fun tyvKey(id: symbol) = (number(id)*namespaces+2, name(id)) ! 32: fun sigKey(id: symbol) = (number(id)*namespaces+3, name(id)) ! 33: fun strKey(id: symbol) = (number(id)*namespaces+4, name(id)) ! 34: fun fctKey(id: symbol) = (number(id)*namespaces+5, name(id)) ! 35: fun fixKey(id: symbol) = (number(id)*namespaces+6, name(id)) ! 36: ! 37: fun key(namespace:int, id:symbol) = ! 38: (namespaces*(number id)+namespace, name id) ! 39: ! 40: end (* NameSpace *)
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.