F#

Aug. 19th, 2010 05:00 pm
109: (Default)
[personal profile] 109
начал изучать F# сегодня после обеда. похоже, что к концу дня уже и закончил. никакой дополнительной гибкости по сравнению с C# не наблюдается. взять tuples. ок, я могу сматчить первый элемент как (x, _), аналогично head в списке. а как мне сматчить остаток (e.g. tail)? или как итерировать по тупелу заранее неизвестного типа? или как динамически создать тупел, имея, скажем, список типов элементов? а ведь без перечисленного мной ничего осмысленно реляционного не написать. вот у них ничего не пошевелилось в душе, когда они хуярили эти конструкторы?

Tuple(T1)
Tuple(T1, T2)
Tuple(T1, T2, T3)
Tuple(T1, T2, T3, T4)
Tuple(T1, T2, T3, T4, T5)
Tuple(T1, T2, T3, T4, T5, T6)
Tuple(T1, T2, T3, T4, T5, T6, T7)
Tuple(T1, T2, T3, T4, T5, T6, T7, T8)


bonus: Action(T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)

видимо, Билл Гейтс сказал, что 16 параметров должно быть достаточно для любого метода.

(no subject)

Date: 2010-08-20 05:47 am (UTC)
From: [identity profile] thedeemon.livejournal.com
> first::second::_

Это для списков, не для туплов.
109 хочет использовать туплы как гетерогенные списки, а это без выкрутасов не типизируется. Есть ли в F# достаточные выкрутасы - не в курсе.

(no subject)

Date: 2010-08-20 06:46 am (UTC)
From: [identity profile] metaclass.livejournal.com
Отправить его читать Олега про HList и возрадоваться очередной душе, попавшей в цепкие лапы инфернального ФП :)

(no subject)

Date: 2010-08-20 07:36 am (UTC)
From: [identity profile] 109.livejournal.com
> 109 хочет использовать туплы как гетерогенные списки

нет. мне нужна удобная языковая поддержка датабазных кортежей. а туплами их назовут, или хрюплами, пофиг. собственно, самим словом tuple их так позиционировали, но использовать их для этой цели, как выяснилось, невозможно.

(no subject)

Date: 2010-08-20 09:39 am (UTC)
From: [identity profile] 184467440737095.livejournal.com
тупл это
1) функция, превращающая несколько значений в значение декартового произведения типов
2) функция проекции этого произведения обратно в компоненты

что и написано в документации по приведенной вами ссылке
собственно, самим словом tuple их так позиционировали.


(no subject)

Date: 2010-08-21 01:31 am (UTC)
From: [identity profile] 109.livejournal.com
я знаю, что такое дотнетовский тупл, спасибо. проблема в том, что F# не даёт языковой поддержки для нужных мне операций, хотя мог бы.

(no subject)

Date: 2010-08-20 10:24 am (UTC)
From: [identity profile] permea-kra.livejournal.com
Дык
class SQL_Value 
 = SQL_Bool Bool
 | SQL_SmallInt SmallInt
 ....

type SQL_Row = List < SQL_Value >

уебство, конечно, но обычно плюшки перевешивают бойлерплейт.

(no subject)

Date: 2010-08-21 01:42 am (UTC)
From: [identity profile] 109.livejournal.com
> class SQL_Value
= SQL_Bool Bool
| SQL_SmallInt SmallInt

это на каком языке?

(no subject)

Date: 2010-08-21 07:10 am (UTC)
From: [identity profile] permea-kra.livejournal.com
Это псевдокод. Я не настолько копенгаген, чтобы писать в шарповом синтаксисе.

Profile

109: (Default)
109

March 2019

S M T W T F S
     12
3456789
101112131415 16
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags