1903年に、スウェーデンのスヴァンテ・アレニウスが提唱する。1905年にアインシュタインが光量子仮説でノーベル賞を受賞したが、1908年にアレニウスは自著『世界のなりたち』を出版し、パンスペルミアが隕石に付着せずともそれ自体として、恒星からの光の圧力すなわち放射圧または光圧で宇宙空間を移動する説、を現して、「光パンスペルミア（説）(radio-panspermia)」と呼称している。地球の位置における太陽光の光圧は5マイクロパスカルと微細だが、宇宙空間に浮遊する極小物体を移動させる可能性があるとしている。当時は光圧を用いた太陽帆の実証は実験されておらず、ブラックホールの研究で著名なシュヴァルツシルトによる、太陽放射に最も影響される球体は直径160nmとする推算値を提示して自説を補強している。当時は最小微生物は200 - 300nmとされていたが現在は200nmをやや下回る程度と考えられシュヴァルツシルトによる推算値に近傍している。アレニウスの「光パンスペルミア」に対する、隕石などに付着した生命の種子に起源がある、旨の説は「弾丸パンスペルミア (ballistic-panspermia)」や「岩石パンスペルミア (litho-panspermia)」と呼称される。光パンスペルニアと弾丸パンスペルミアはともに、微生物が地球へ到達するには宇宙の超低温に耐えねばならない。当時は海王星の大気温度はマイナス220度と推定され、微生物が液体空気のマイナス200度で半年以上生存すると、アレニウスは実験で例証している。生命現象を化学現象の一種ととらえるなら温度が低いほど生命の過程もゆっくり進む、とアレニウスは洞察し、室温10度で1日で死ぬ微生物は海王星のマイナス220度ならば死滅まで300万年を要する、と試算している。
Miranda は遅延評価の純粋関数型言語であり、副作用がなく、命令型プログラミング機能は存在しない。具象構文の最も大きい特徴としては、オフサイドルールを採用している。|| からその行の終わりまでがコメントとして扱われる。別のコメント記法は「文芸的プログラミング」的なもので、行の先頭に > がない行は全てコメントとして扱われる。Miranda の基本データ型は char、num、bool である。文字列は char のリストであり、num は内部的には2種類の形式があって、自動的に変換される（多倍長整数がデフォルトで使われ、必要に応じて浮動小数点数が使われる）。タプルは様々な型のデータの羅列であり、抽象的な観点からは直積型である。this_employee = ("Folland, Mary", 10560, False, 35)リストもある。角括弧で表され、各要素はカンマで区切られる。全要素は同じ型でなければならない。week_days = ["Mon","Tue","Wed","Thur","Fri"]リストの連結は ++、差分は --、要素追加は :、サイズ（要素数）は #、インデックス指定は ! である。以下に使用例を挙げる。days = week_days ++ ["Sat","Sun"]days = "Nil":daysdays!0 → "Nil"days = days -- ["Nil"]#days → 7その他にもリスト構築のショートカットがある。.. は要素が数列の場合に利用可能で、1 ずつ増加する数列以外も指定可能である。fac n   = product [1..n]odd_sum = sum [1,3..100]さらに強力なリスト構築機能として「リスト内包表記」（ZF記法とも呼ばれていた）があり、2種類の形式がある。式を項の列に適用する形式は以下のようになる。squares = [ n * n | n <- [1..] ]この意味は、n の自乗のリストで、n は全ての正の整数のリストから取られる。また、ある項がその1つ前の項の関数から得られる形式は以下のようになる。powers_of_2 = [ n | n <- 1, 2*n .. ]これは、2のべき乗のリストである。これらの例から分かるように、Miranda では無限のリストを表現可能である。たとえばごく単純な無限のリストの例として、全ての正の整数のリスト [1..] がある。さらに（これはHaskellには無い機能のため、Mirandaの特色と言えるが）、// という記号を使う diagonalising list comprehensions（対角化リスト内包表記）により、[1..] というような無限のリスト2つから、[(1, 1), (1, 2), (2, 1), (1, 3), (2, 2), (3, 1), ..] というようなそれらを合成したリストを作ることができる（普通の内包表記で普通に作ろうとすると、片方のリストを辿り続けてしまい、もう片方のリストを辿ることをしないため、うまくできない）。[(x, y) // x <- [1..]; y <- [1..]] というように書く。関数への実引数の適用は sin x のように、単に関数に実引数を続ける。Miranda は他の純粋関数型言語と同様、関数を引数として他の関数に渡したり、関数の結果として関数を返したり、データ構造に要素として関数を含むといったことが可能である。また、関数は全て1引数にカリー化されているものと見ることもでき、実引数の数が足りていない適用は部分適用となる（注意: しばしば混同されるが、「カリー化」と「部分適用」は違うものである）。例えば次のようになる。add a b = a + bincrement = add 1この場合、increment は自身の引数に 1 を加算する。実際、add 4 7 は2つの引数をとる関数 add だが、これも実際には単一引数 7 に 4 を加算する関数とも解釈できる。2つの引数をとる関数を中置演算子にすることができる。例えば、上記の add 関数では、$add という項を + 演算子と同じように使うことができる。逆に2つの引数に作用する中置演算子を関数に変換することもできる。従って、次のようになる。increment = (+) 1これは、引数に 1 を足す関数を記述する一番単純な方法である。同様にhalf = (/ 2)reciprocal = (1 /)といった単一引数関数を作成できる。この場合、インタプリタは除算のどちらの引数が関数の引数として供給されるのかを理解しており、引数を 2 で割る関数や 1 を引数で割る関数が得られる。Miranda は強い型付けをする言語だが、記述上は明確な型の宣言を必ずしも要しない。関数の型が明示されない場合、インタプリタは引数の型や引数の使われ方から型推論を行う。例えばリスト逆転関数などでは、基本データ型（char, num, bool）に加えて、引数の型を問題としない anything 型がある。rev [] = []rev (a:x) = rev x ++ [a]これは、任意のデータ型のリストに適用可能である。これを明示的に関数型を宣言するなら、次のようになる。rev :: [*] -> [*]モジュール機構による名前空間の分離機構もある。モジュール外から内部の名前が見えないようにできる。