metaclass: (Default)
[personal profile] metaclass
Наткнулся в F# на то, что для строки автоматически не делается upcast до объекта, если в описании функции для этого объекта не написать что это flexible type, т.е. вместо obj - #obj.
Flexible type параметр - это пометка, что функция принимает не только значения строго этого типа, а еще и значения с типами потомков. Соответственно, чтобы передавать любой объект в функцию, нужно писать #obj
Соответственно, если этого не написать, то единственный вариант вызова вместо "fun s" будет "fun (upcast s)". Тип оператор upcast автоматически инферится при компиляции.

Причем эта падла не дает этот flexible type использовать в декларациях типов, в спецификации написано что можно использовать только в member declarations.

Date: 2010-06-12 09:22 pm (UTC)
From: [identity profile] zamotivator.livejournal.com
Кстати, как тебе F#?

Date: 2010-06-12 09:31 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Немного создает впечатление "стащили к себе из других языков и платформ все что плохо лежало", но вообще хорошо.

Date: 2010-06-13 04:28 am (UTC)
From: [identity profile] alexey-rom.livejournal.com
Да. Интегрировали с .NET, интегрировали, да не довыинтегрировали.

Date: 2010-06-13 08:15 am (UTC)
From: [identity profile] metaclass.livejournal.com
Вроде там почти все в этой интеграции нормально. Я именно из-за нее его и использую, практически идеально встраивается в существующие проекты.

Date: 2010-06-13 09:24 am (UTC)
From: [identity profile] alexey-rom.livejournal.com
Почти. Но пятна вроде этого остались.

Date: 2010-06-14 06:56 am (UTC)
From: [identity profile] geniepro.livejournal.com
А приходится ли Вам устанавливать компилятор F# (окромя .NET) на тех машинах, где эксплуатируется Ваш смешанный C#/F# код? А то у меня тут такая лажа с этим появилась после одного из обновлений компилятора -- не мог линковать F#-рантайм к dll-ке из-за конфликта с C#-кодом, юзающим эту dll-ку. Пришлось устанавливать сам F#-транслятор.

Date: 2010-06-14 06:57 am (UTC)
From: [identity profile] metaclass.livejournal.com
Нет, я пока F# код никуда не деплоил, он тут на этапе разработки используется для кодогенерации.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 24th, 2025 06:35 pm
Powered by Dreamwidth Studios