Кирилл Кирсанов ([info]kkirsanov) wrote,
@ 2009-05-05 00:40:00
Previous Entry  Add to memories!  Tell a Friend  Next Entry
Entry tags:python

Рабоче-хоилворное.
Под впечатлением http://community.livejournal.com/ru_lambda/102751.html?thread=1532255#t1532255 попробовал сделать алгебраические типы данных на Python. Книжку про Haskell ещё не дочитал по этому не уверен что сделал именно то, что нужно:

def ATypes(typeName, typeArgs):
if type(typeArgs) == type(""):typeArgs = (typeArgs,)
def creator(self, *args, **kwargs):
i = 0
for arg in typeArgs:
if kwargs.has_key(arg):
self.__dict__[arg] = kwargs[arg]
del kwargs[arg]
else:
self.__dict__[arg] = args[i]
i += 1
globals()[typeName] = type(typeName, (), {'__init__': creator})

#Теперь тестим:
ATypes('List', ('head', 'Tail'))
ATypes('Tail', 'List')
s = List(1, List(2, None))
if isinstance(s.Tail, List):
print s.Tail.head


ATypes('BTree', ('LH', 'RH', 'data'))
ATypes('LH', 'BTree')
ATypes('RH', 'BTree')
MyTree = BTree(None, BTree(None, None, 2), 1)

if isinstance(MyTree , BTree) and isinstance(MyTree.RH , BTree):
print MyTree.RH.data



(15 comments) - (Post a new comment)


[info]kurilka
2009-05-05 04:23 am UTC (link)
вроде нет в аглицком слова hoil

(Reply to this) (Thread)


[info]kkirsanov
2009-05-05 07:26 am UTC (link)
Holy

(Reply to this) (Parent)(Thread)


[info]kurilka
2009-05-05 07:34 am UTC (link)
это был очень тонкий намёк, что опечатку не мешает подправить.

(Reply to this) (Parent)(Thread)


[info]kkirsanov
2009-05-05 07:44 am UTC (link)
Намек мог бы быть и потолще.

(Reply to this) (Parent)


[info]freiksenet
2009-05-05 06:44 am UTC (link)
Прямо холивар)

(Reply to this) (Thread)


[info]kkirsanov
2009-05-05 08:15 am UTC (link)
Ты по-английски "war" так и произносишь, - "Вар"?

(Reply to this) (Parent)(Thread)


[info]freiksenet
2009-05-05 08:23 am UTC (link)
%) По английски я произношу как то типа "во". Холивор и холивар одинаково безграмотно и неизвестно какая транслитерация лучше - фонетическая или буквенная)

(Reply to this) (Parent)


[info]ysae
2009-05-05 07:32 am UTC (link)
а что именно за книжка?
ну, зря поспешил, но не сильно, ведь дорога ложка к обеду.

(Reply to this) (Thread)


[info]kkirsanov
2009-05-05 07:40 am UTC (link)
Одновременно 2: Р. В. Душкин "Функциональное программирование на языке Haskell" - не очень нравится и http://www.cl.cam.ac.uk/teaching/Lectures/funprog-jrh-1996/index.html

(Reply to this) (Parent)(Thread)


[info]kurilka
2009-05-05 07:50 am UTC (link)
может стоит глянуть http://www.realworldhaskell.org/ ?

(Reply to this) (Parent)(Thread)


[info]ysae
2009-05-05 10:32 am UTC (link)
Полностью поддерживаю. Купил в свое время книгу Даркуса - не пошло.
Не то, чтобы совсем зря купил, но ее я перечитаю как-нибудь потом.
А RWH, хоть и не перевод, даже с моими познаниями английского читается гораздо веселее и приятнее.

(Reply to this) (Parent)(Thread)


[info]ysae
2009-07-08 09:12 pm UTC (link)
Вспомнил, почему не пошло: начинал читать с середины. Оказалось, что если читать по-человечески, тогда читается намного лучше. :)

(Reply to this) (Parent)


[info]kkirsanov
2009-05-05 10:45 am UTC (link)
Всенепременно.

(Reply to this) (Parent)


[info]ysae
2009-05-05 10:35 am UTC (link)
А указанная книга Hassison'а, кстати, лежит в переводе вот тут:
http://code.google.com/p/funprog-ru/downloads/list?can=2&q=

(Reply to this) (Parent)


[info]Кочетков Владимир [blogspot.com]
2009-10-12 05:18 pm UTC (link)
Чуток доработал: http://rsdn.ru/Forum/Message.aspx?mid=3566122 ;)

(Reply to this)


(15 comments) - (Post a new comment)

Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…