One Million A.D.
One Million A.D. is a science fiction anthology edited by American writer Gardner Dozois, published in 2005.
Author | Edited by Gardner Dozois |
---|---|
Country | United States |
Language | English |
Genre | Science fiction |
Publisher | Science Fiction Book Club |
Publication date | 2005 |
Media type | Print (Hardcover) |
Pages | 399 |
ISBN | 0-7394-6273-3 |
OCLC | 63178197 |
LC Class | PS648.S3 O54 2005 |
Contents
The book includes 6 novellas, all commissioned for this book and published here for the first time. The stories are all supposed to take place in the year One Million A.D. The book also begins with a three-page introduction by Dozois entitled "Exploring the Far Future". The stories are as follows.
- Robert Reed: "Good Mountain"
- Robert Silverberg: "A Piece of the Great World"
- Nancy Kress: "Mirror Image"
- Alastair Reynolds: "Thousandth Night"
- Charles Stross: "Missile Gap"
- Greg Egan: "Riding the Crocodile"
The setting of Alastair Reynolds's story was later used as the setting for the novel House of Suns.
gollark: Please also give me write access to the repo.
gollark: Oh, right, array indexing.
gollark: ```python# parsita-based pseudocode syntax parserfrom stmt import *from parsita import *from parsita.util import constantdef compose(f, g): return lambda x: f(g(x))def map_expr(x): start, end = x if end == "": return start return Op([start, end[1]], end[0])def map_unop_expr(x): return Op(x[1], x[0])def aliases(name, aliases): p = lit(name) for alias in aliases: p |= (lit(alias) > (lambda _: name)) return pclass ExprParser(TextParsers): ε = lit("") IntLit = reg("\-?[0-9]+") > compose(IntLit, int) StrLit = "'" >> reg("[^']*") << "'" > StrLit # TODO escapes (not in "spec" but could be needed) FloatLit = reg("\-?[0-9]+\.[0-9]+") > compose(FloatLit, float) Identifier = reg("[a-zA-Z_]+[a-zA-Z_0-9]*") > Var BracketedExpr = "(" >> Expr << ")" UnaryOperator = lit("NOT") Start = FloatLit | StrLit | IntLit | BracketedExpr | (UnaryOperator & Expr > map_unop_expr) | Identifier # avoid left recursion problems by not doing left recursion # AQA pseudocode does not appear to have a notion of "operator precedence", simplifying parsing logic nicely BinaryOperator = aliases("≤", ["<="]) | aliases("≠", ["!="]) | aliases("≥", [">="]) | lit("DIV") | lit("MOD") | lit("AND") | lit("OR") | reg("[+/*\-=<>]") End = (BinaryOperator & Expr) | ε Expr = (Start & End) > map_exprparse = ExprParser.Expr.parsex = parse("1+2+3 != 6 AND NOT 4 AND x + y")if isinstance(x, Failure): print(x.message)else: print(x.value)```
gollark: <@332271551481118732> Expression parsing is done, I think.
gollark: I wonder if AQA pseudocode *does* have operator precedence. We may need to harvest exam papers.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.