勇闖新世界︰ 《 pyDatalog 》【專題】之物件導向設計‧二

若是因為錯檢,《後生可畏!?》文本前中後失序,給編成了後中前 ,它的意義是否會改變的呢?

─── 後 ──

假使一個人果能站在前人學問的基石上,又天真好奇孜孜不倦,那就會如孔子在《論語‧子罕》:

後生可畏焉知來者之不如今也。 四十、五十而無 ── ㄨㄣˊ陽關道 ──焉,斯亦不足畏也已。

,裡所說的一樣。甚至要能如下面所引的『一則故事』那樣

歐陽修, 一向治學嚴謹,直至晚年,不減當初。他常將自己平生所寫的文章,清理出來進行修改,每字每句反覆推敲,甚是認真。為此,他整天辛苦勞累,有時直忙 到深夜。夫人見他年歲已高,還如此盡心費神,恐其操勞過度,影響健康,十分擔心,目前制止。她關切地對丈夫說:『官人,何必如此用功,不惜貴體安康,為這 些文字吃這樣多的苦頭,官人已年邁致仕(退休),難道還怕先生責難生氣嗎?』歐陽修回答說:『不怕先生生氣,只怕後生生譏』,『後生可畏耶!』

活到老學到老

 

─── 中 ──

王國維 治學三境界

王國維 書法

OLYMPUS DIGITAL CAMERA

任教於水木清華又是四大導師之一的王國維先生在他的大作《人間詞話》裡說到他『治學經驗』,是這麼講的

古今之成大事業大學問者,必須經過三種之境界︰『昨夜西風凋碧樹,獨上高樓,望盡天涯路。』此第一境也。『衣帶漸寬終不悔,為伊消得人憔悴。』此第二境也。『眾裡尋他千百度,回頭暮見,那人正在,燈火欄珊處。』此第三境也。

作者並不能知道他為何『錯記』或是『記錯』了第三個境界?那裡寫的『眾裡尋他千百度,回頭暮見,那人在,燈火欄珊處。』當是辛棄疾的《青玉案‧元夕》之『眾裡尋他千百度。驀然回首,那人在,燈火闌珊處。』。或許就像德國的大心理學家西格蒙德·佛洛伊德的『夢的解析』一書所說的︰要講『遺忘』一事到底是何事呢?此事總發生於過去卻又老是影響當下未來!!

就讓我們自己踏入那河中哪怕只是一次;

蝶戀花 北宋 晏殊

檻菊愁煙蘭泣露,
羅幕輕寒,
燕子雙飛去。
明月不諳離恨苦,
斜光到曉穿朱戶。
昨夜西風凋碧樹,
獨上高樓,
望盡天涯路。
欲寄彩箋兼尺素,
山長水闊知何處?

蝶戀花 北宋 柳永

佇倚危樓風細細,望極春愁,黯黯生天際。
草色煙光殘照裏,無言誰會憑闌意?
擬把疏狂圖一醉,對酒當歌,強樂還無味。
衣帶漸寬終不悔為伊消得人憔悴

青玉案‧元夕 南宋 辛棄疾

東風夜放花千樹,更吹落、星如雨。
寶馬雕車香滿路。鳳簫聲動,玉壺光轉,一夜魚龍舞。
蛾兒雪柳黃金縷,笑語盈盈暗香去。眾裡尋他千百度
驀然回首那人卻在燈火闌珊處

去感受那大地迴旋之流水淙淙,…通向…心靈的一扇門扉…

 

─── 前 ──

中國傳統服飾-先秦天子冕服

中國結

玉珮

先秦天子冕服有許多象徵意義上衣、象以日夜,故為之青黑下裳,徵之富饒,用中透十二章紋述說一年,上下均分說著夏冬,其數實乃是周易的乾坤。古代上衣下裳的形制,因能方便耕作勞動,也就變成大眾傳統服飾了。

古之讀書人常有配戴玉珮』的習慣,這是因為──

禮記‧聘義

子貢問於孔子曰︰敢問君子貴玉賤媒者,何也?為與?孔子曰︰非為媒之多,故賤之也;玉之寡,故貴之也。夫昔者君子比德於玉焉,溫潤而澤、也,縝密以栗、也,廉而不劌、也,垂之如隊、也,叩之其聲清越以長其終詘然、也,瑕不掩瑜、瑜不掩瑕、也,孚尹旁達、也,氣如白虹、也,精神見於山川、也,圭璋特達、也。天下莫不貴者、道也云︰言念君子.溫其如玉,故君子貴之也──。

於是有了『玉有十德』之說『仁、知、義、禮、樂、忠、信、天、地、德』,都是源自大道,真可說是善於『觀物』取象意在象外的了。

 

所以誤讀到底是什麼事呢?心有所動,意欲存之;圖其所謀,摘折字句,常以『有所為而讀』。縱不期勝人者有力,於天地自然之理 ,相會時少,與人間社會之事,接觸者眾。即使講『理事不二』,今失衡失重導致『事理難通』,錯讀恐是刻意為之,又如之奈何?古之學者『為己』,能成就己,或可『為人』,將成就人。如果把『為己』『為人』顛倒,怕是『讀書為人』,所圖『為己』而已。既少求己『成人』,鮮有能成就人者的哩!書中有無『顏如玉』?籍裡有無『黃金屋』??太半皆是『 □ 者見 □ 』、『○ 者見 ○ 』己心所『現』的吧!!

當『典範』遇上『典範』,或由此及彼,或自彼通此,恐有矛盾 ,引發是非,特此點出和不同才是『達』,相輔相成與相反相成存乎一心,方可用。終是求得利去弊之道而已。『觀物』取象之法,有法可學嗎?既然『意』在『象』外,『意』存『心』中,實在說是以『心』『觀心』之事,紮根於反思『身體力行』而來,何不

Do It Yourself

阿!!

嘗試從一段文字和幾個範例

2 Object-oriented Datalog

說明裡

【行禮如儀】

pi@raspberrypi ~ $ python3
Python 3.2.3 (default, Mar  1 2013, 11:53:50) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from pyDatalog import pyDatalog 
>>> 
>>> class Employee(pyDatalog.Mixin):
...     def __init__(self, name, manager, salary):
...         super(Employee, self).__init__()
...         self.name = name
...         self.manager = manager
...         self.salary = salary
...     def __repr__(self):
...         return self.name
... 
>>> John = Employee('John', None, 6800)
>>> Mary = Employee('Mary', John, 6300)
>>> Sam = Employee('Sam', Mary, 5900)
>>> pyDatalog.create_terms('has_car, X')
>>> + has_car(Mary)
>>> print(has_car(X))
X   
----
Mary
>>> print(Employee.salary[X]==6300)
X   
----
Mary
>>> print(X)
X
>>> print(X.v())
Mary
>>> Employee.indirect_manager(X,Y) <= (Employee.manager[X]==Y) & (Y != None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'Y' is not defined
>>> pyDatalog.create_terms('Y, Z')
>>> Employee.indirect_manager(X,Y) <= (Employee.manager[X]==Y) & (Y != None)
Employee.indirect_manager(*,X,Y) <= Employee.manag
>>> Employee.indirect_manager(X,Y) <= (Employee.manager[X]==Z) & Employee.indirect_manager(Z,Y) & (Y != None)
Employee.indirect_manager(*,X,Y) <= Employee.manag
>>> Employee.salary_class[X] = Employee.salary[X]//1000
>>> print(John.salary_class)
6
>>> Mary.salary_class = ((Employee.salary_class[Mary]==X) >= X) 
>>> result = (Employee.salary_class[X] == 5) & Employee.indirect_manager(X, John)
>>> print(result)
X  
---
Sam
>>> 

>>> type(X)
<class 'pyDatalog.pyParser.Term'>
>>> dir(X)
['_UserList__cast', '__abstractmethods__', '__add__', '__call__', '__class__', '__cmp__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__dict__', '__div__', '__doc__', '__eq__', '__floordiv__', '__format__', '__ge__', '__getattr__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__module__', '__mul__', '__ne__', '__neg__', '__new__', '__pos__', '__pow__', '__radd__', '__rdiv__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rfloordiv__', '__rmul__', '__rpow__', '__rsub__', '__rtruediv__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__unicode__', '__weakref__', '_abc_cache', '_abc_negative_cache', '_abc_negative_cache_version', '_abc_registry', '_data', '_in', '_not_in', '_pyD_atomized', '_pyD_for', '_pyD_lua', '_pyD_name', '_pyD_negated', '_pyD_precalculations', '_pyD_type', '_pyD_value', '_pyD_variables', '_value', 'append', 'count', 'data', 'extend', 'in_', 'index', 'insert', 'is_variable', 'make_for_prefix', 'not_in_', 'pop', 'remove', 'reverse', 'sort', 'todo', 'v', 'variables']
>>> print(Z)
Z
>>> type(Z)
<class 'pyDatalog.pyParser.Term'>
>>> type(X.v())
<class '__main__.Employee'>
>>> print(Employee.indirect_manager(John, Y))
[]
>>> print(Employee.indirect_manager(X, John))
X 
----
Mary
Sam 
>>> 

 

看能夠讀出多少意義的耶?!!?