Увидел вчера в книжном нового, свеженького (для России) Рейвенора-отступника, и не смог пройти мимо - подхватил и утащил, аки паук, на кассу.
Качество бумаги по сравнению с предыдущим изданием - небо и земля, причем сравнение, естественно, не в пользу предыдущего. И, хотя я уже читал его в оригинале, начал читать в русском переводе. Пока откровенных косяков не замечено - Молох все еще Молох.
Вот так. Этот пост, конечно, не интересен будет тем, кто не в теме :]
(setf *my-blog* (make-instance 'blog)) ;Also available in Common LISP
Показаны сообщения с ярлыком Интересное. Показать все сообщения
Показаны сообщения с ярлыком Интересное. Показать все сообщения
понедельник, 19 апреля 2010 г.
воскресенье, 11 апреля 2010 г.
Лекция в политехе.
Был в среду на лекции "Эволюция искусственного интеллекта" в Политехническом музее.
Лекция проходила в Большой аудитории. На подобном мероприятии в политехе был впервые, а в самом политехе - в третий раз в жизни :]
В общем, пришел, сел. Пришел за 5 минут до начала (то бишь без пяти восемь). Народу было где-то половина аудитории. К тому моменту, когда началась лекция (началась она с опозданием на 10 минут) - был уже почти полный зал (только несколько верхних рядов были заполнены наполовину.
Итак, собственно про лекцию. Я по ходу делал кое-какие заметки, сейчас по ним попробую восстановить. Если что забыл - не обессудьте.
Лекция проходила в Большой аудитории. На подобном мероприятии в политехе был впервые, а в самом политехе - в третий раз в жизни :]
В общем, пришел, сел. Пришел за 5 минут до начала (то бишь без пяти восемь). Народу было где-то половина аудитории. К тому моменту, когда началась лекция (началась она с опозданием на 10 минут) - был уже почти полный зал (только несколько верхних рядов были заполнены наполовину.
Итак, собственно про лекцию. Я по ходу делал кое-какие заметки, сейчас по ним попробую восстановить. Если что забыл - не обессудьте.
четверг, 1 апреля 2010 г.
суббота, 27 марта 2010 г.
F# Mono Bug, или Микрософт как всегда.
Наткнулся сегодня на интересный баг в F#.
До конца локализовать пока не удалось, но, кажется, что паттерн матчинг с 'a option неправильно работает.
Итак. Имеем код (да, это тот самый шифр цезаря :] ):
В винде все работает, как и предполагалось - написав в fsi, к примеру
#load "caesar.fs"
Caesar.encodeLetter 5 'a';;
Получим на экране
found 0
a - 0
val it : char = 'f'
То есть - getIndex отработал как надо, достал нам индекс, что, в свою очередь означает, что паттерн матчинг Some(x) сработал. Под моно же имеем следующую картину:
None
a - -1
val it : char = 'e'
То есть явно видно, что в том же самом коде тот же самый паттерн не сработал.
Бьюсь в истерике Очень интересный баг.
UPD: Однако, если вызывать getIndex напрямую - выводит все как полагается. Значит, беспорядки начинаются уже в encodeLetter - почему-то "теряется"... пока не пойму что.
UPD2: Причина, оказывается, крылась в генерализации функции (я явно указал 'a в качестве типа параметра). Как только поменял типы параметров в getIndex на char - заработало и под Mono. Подозреваю, тут что-то связано с выводом типов. Буду ковырять дальше.
UPD3: У Mono с выводом типов вообще как-то не очень ладится. Не могли сделать все как в дотнет.
До конца локализовать пока не удалось, но, кажется, что паттерн матчинг с 'a option неправильно работает.
Итак. Имеем код (да, это тот самый шифр цезаря :] ):
module Caesar
let alphabet = Array.ofSeq "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.,?!+=/"
let getIndex (arr: 'a[]) (elt: 'a) =
let optIndex = arr |> Array.tryFindIndex( (=) elt )
match optIndex with
| Some(x) ->
printfn "found %A" x
x
| None ->
printfn "None"
-1
let encodeLetter (shift: int) (letter: char) =
let idx =
letter
|> getIndex alphabet
printfn "%c - %d" letter idx
alphabet.[
( idx + shift ) % (Array.length alphabet)
]
В винде все работает, как и предполагалось - написав в fsi, к примеру
#load "caesar.fs"
Caesar.encodeLetter 5 'a';;
Получим на экране
found 0
a - 0
val it : char = 'f'
То есть - getIndex отработал как надо, достал нам индекс, что, в свою очередь означает, что паттерн матчинг Some(x) сработал. Под моно же имеем следующую картину:
None
a - -1
val it : char = 'e'
То есть явно видно, что в том же самом коде тот же самый паттерн не сработал.
UPD: Однако, если вызывать getIndex напрямую - выводит все как полагается. Значит, беспорядки начинаются уже в encodeLetter - почему-то "теряется"... пока не пойму что.
UPD2: Причина, оказывается, крылась в генерализации функции (я явно указал 'a в качестве типа параметра). Как только поменял типы параметров в getIndex на char - заработало и под Mono. Подозреваю, тут что-то связано с выводом типов. Буду ковырять дальше.
UPD3: У Mono с выводом типов вообще как-то не очень ладится. Не могли сделать все как в дотнет.
пятница, 19 февраля 2010 г.
Jonathan Coulton
Наткнулся вчера на Джонатана Коултона. Это просто праздник какой-то.
Просто кину пару ссылок с небольшими комментариями:
http://www.youtube.com/watch?v=1BmK8PYm504 (The Future Soon - песня про мальчика, который мечтает стать ученым и создать расу роботов-воинов)
http://www.youtube.com/watch?v=z53WLtowYBo (The song about evil Genius in love)
http://www.youtube.com/watch?v=j4TnhemCEmc (Codemonkey - PHP-кодеры, это про вас!)
http://www.youtube.com/watch?v=AjcH2UmK1uo (Песня про зомби от лица зомби)
Восхитительно. Большая часть песен артиста доступна с его сайта для свободного скачивания.
Кстати, именно он написал финальную песню, которую исполняет AI GladOS в игре Portal. Этого само по себе могло быть достаточно, имхо.
Просто кину пару ссылок с небольшими комментариями:
http://www.youtube.com/watch?v=1BmK8PYm504 (The Future Soon - песня про мальчика, который мечтает стать ученым и создать расу роботов-воинов)
http://www.youtube.com/watch?v=z53WLtowYBo (The song about evil Genius in love)
http://www.youtube.com/watch?v=j4TnhemCEmc (Codemonkey - PHP-кодеры, это про вас!)
http://www.youtube.com/watch?v=AjcH2UmK1uo (Песня про зомби от лица зомби)
Восхитительно. Большая часть песен артиста доступна с его сайта для свободного скачивания.
Кстати, именно он написал финальную песню, которую исполняет AI GladOS в игре Portal. Этого само по себе могло быть достаточно, имхо.
Подписаться на:
Сообщения (Atom)
