thedeemon: (office)
[personal profile] thedeemon
Забавная танцевальная битва Idris vs. Scala, где Miles Sabin пытается на Скале воспроизвести пару примеров использования зависимых типов, показанных перед этим на Идрисе:
http://www.infoq.com/presentations/scala-idris (40 минут видео)
Не очень успешно.

Date: 2013-12-09 12:31 pm (UTC)
From: [identity profile] xeno-by.livejournal.com
Not enough macro power.

Date: 2013-12-09 12:34 pm (UTC)
From: [identity profile] xeno-by.livejournal.com
А если серьезно, то мне показалось довольно странным, что Майлс решил один-в-один транслитерировать Идрисовый DSL на Скалу. Было бы интересно подумать, можно ли на Скале сделать что-то похожее по функциональности, используя средства, которые будут работать более удобным образом.

Date: 2013-12-09 12:37 pm (UTC)
From: [identity profile] xeno-by.livejournal.com
А насчет экстравагантного способа реализации вычислений на типах (который был в презентации в части про векторы, но гораздо лучше иллюстрируется вот тут: http://lanyrd.com/2013/scalax/scrzmm/), то вот тут я уверен, что при помощи макросов можно сделать синтаксис сопоставимым по удобству с, например, type families. Мы с Майлсом хотели рассказать про что-то такое на прошлой неделе на Scala eXchange, но у него не получилось приехать, поэтому начинание пришлось отложить.

Date: 2013-12-09 04:17 pm (UTC)
From: [identity profile] udpn.livejournal.com
Тю, так в Haskell всегда такое на type classes с undecidable instances делали. Там оно и синтаксисом покрасивее. Я только не понимаю, какое отношение это имеет к зависимым типам, потому что здесь просто два stage, явное отделение вычислений времени компиляции, нет проверки тотальности и всё такое.

Date: 2013-12-09 04:24 pm (UTC)
From: [identity profile] xeno-by.livejournal.com
А можно пример синтаксиса из Хаскелла, который покрасивее?

К зависимым типам это имеет косвенное, но отношение, т.к. некоторые зависимые вещи (те же вектора) можно неплохо выразить при помощи вычислений на типах во время компиляции.

Date: 2013-12-09 04:30 pm (UTC)
From: [identity profile] udpn.livejournal.com
http://okmij.org/ftp/Computation/lambda-calc.html
см. "Type-level call-by-value lambda-calculator in three lines"

Найти более развёрнутый пример что-то сходу не смог. Ребе thesz большой любитель такого, спрашивайте его :)

Date: 2014-01-14 12:10 am (UTC)
From: [identity profile] sassa-nf.livejournal.com
да в скале не очень получилось выразить даже факт, что Vect n a ++ Vect m a = Vect (n+m) a, т.е. что длина будет именно суммой. В итоге реализовал в конкатенации заодно и сложение.

Profile

thedeemon: (Default)
Dmitry Popov

December 2025

S M T W T F S
 12 3456
789101112 13
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 8th, 2026 09:42 pm
Powered by Dreamwidth Studios