@Fsharp_chat

Страница 129 из 772
Vasily
15.05.2017
14:16:10
Имеет смысл читать так : "если входной объект можно представить в виде hd::tl, то выполнить такие-то действия"

Pavel
15.05.2017
14:16:27
type List<'t> = | ([]) | (::) of hd: 't * tail : List<'t>

Friedrich
15.05.2017
14:16:31
Google
Илья
15.05.2017
14:16:58
Artemy
15.05.2017
14:17:11
Это немного не правда, :: - это конструктор на самом деле
Да-да. Но, как уже сказал, такое объяснение понятно лишь знакомому с понятием "конструктора" в том же Хаскелле. В F# же, вроде как, понятия конструктора, как в Хаскелле нет. Так ведь?

Pavel
15.05.2017
14:17:33
Это не из хаскеля, это просто хитрый кейс у Discriminated Union

Friedrich
15.05.2017
14:17:53
Для того который не подойдет под предыдущие условия?
Конкретно в том выражении этот паттерн подойдёт для любого списка, который не совпал с предыдущими паттернами. Поэтому в том конкретном месте оно используется просто чтобы сразу разбить его на две переменных.

Pavel
15.05.2017
14:18:02
Можно для простоты считать это оператором, который конструирует новый список добавлением "головного" элемента, и в pattern matching деконструирет его из головы и хвоста

Friedrich
15.05.2017
14:18:40
Чёт мы не можем объяснить человеку ?

Функциональное программирование нас совсем испортило!

Vasily
15.05.2017
14:18:52
Ну сложно для восприятия, да

Friedrich
15.05.2017
14:19:01
Я согласен, что это сложно с наскоку.

Vasily
15.05.2017
14:19:09
Особенно когда юный мозг отравлен императивным программированием

Friedrich
15.05.2017
14:19:31
@DarkByte2016, местные не могут тебе помочь. Попробуй сам разобраться, почитай книжку, вдумайся в суть ⓒ ™

Илья
15.05.2017
14:19:38
Конкретно в том выражении этот паттерн подойдёт для любого списка, который не совпал с предыдущими паттернами. Поэтому в том конкретном месте оно используется просто чтобы сразу разбить его на две переменных.
Так еще раз... Значит если список не подходит под предыдущие условия и доходит до этого то объявляются две переменные - голова и хвост (все кроме головы) списка. Так чтоли?

Google
Vasily
15.05.2017
14:19:47
Угу

Илья
15.05.2017
14:20:02
Фууух.... Сложна... Вроде понял

Pavel
15.05.2017
14:20:04
И не забывай про пустой список

Friedrich
15.05.2017
14:20:15
И не забывай про пустой список
Пустой список у него там выше отсечён.

Vasily
15.05.2017
14:20:25
Пустой список не подходит под этот паттерн, да

Pavel
15.05.2017
14:20:27
Да, там почему-то три варианта отсечено

Friedrich
15.05.2017
14:20:37
Vasily
15.05.2017
14:20:39
Для ускорения, думаю

Friedrich
15.05.2017
14:20:47
gotcha

Илья
15.05.2017
14:20:54
Для ускорения, думаю
это просто пример из книжки))0

Vasily
15.05.2017
14:21:24
Это меня в свое время проплющило с того, как в Java массивы объявляются

Под капотом

И списки

Я чуть не поседел

Илья
15.05.2017
14:22:25
Это меня в свое время проплющило с того, как в Java массивы объявляются
Ты б еще залез в исходники C++ STD. Там жопа полная.

Friedrich
15.05.2017
14:22:34
FSharp.Core любит такие же паттерны вводить: https://github.com/fsharp/fsharp/blob/ebf311505d8035e7ba53bcc7493067f8fe8ba5f9/src/fsharp/FSharp.Core/list.fs#L329-L333

Дед Пегас
15.05.2017
14:22:44
Friedrich
15.05.2017
14:23:06
Ты б еще залез в исходники C++ STD. Там жопа полная.
А ты посмотри стандартные библиотеки в более приличных компиляторах C++ — в clang, например. Там код даже можно читать!

Илья
15.05.2017
14:25:02
А ты посмотри стандартные библиотеки в более приличных компиляторах C++ — в clang, например. Там код даже можно читать!
Я наверное не в теме. А что каждый компилятор реализует стандартные библиотеки по своему?

Google
Friedrich
15.05.2017
14:25:16
Может, есть и исключения, но основные компиляторы C++ тесно связаны каждый со своей реализацией стандартной библиотеки.

Artemy
15.05.2017
14:26:04
@DarkByte2016, вообще, я "вводился" в ФП с помощью курса FP101X на edx. Не знаю, насколько хорош он на самом деле, но мне вроде становилось более менее понятно. Правда, это было на 2-м курсе у меня, так что я не был сильно привыкшим к императивному и ОО программированию. :)

Но там на примере Хаскелля всё объясняется.

Vasily
15.05.2017
14:26:28
Я к f# уже лет 5 присматриваюсь

Ну да до меня долго доходит

Friedrich
15.05.2017
14:27:19
Я около года пытался безуспешно въехать в Haskell и Lisp, и ничего в них не понимал (хотя, может, был молодой и глупый). А потом однажды начал читать про Erlang, и удивительно быстро втянулся в ФП. После этого остальные языки перестали казаться такими непонятными.

Roman
15.05.2017
14:29:29
Про список будет понятнее если сразу говорить что список односвязный и любой список либо пустой либо состоит из головы и другого списка

Friedrich
15.05.2017
14:30:51
Обождите, пускай у человека в голове уляжется то, что он уже изучил. Потом сможем постепенно пересказать ему основные определения :)

(а определение дано хорошее и полезное, да)

Roman
15.05.2017
14:31:54
Так это базовое, не надо говорить про деконструкторы, надо начинать с базовых типов

Friedrich
15.05.2017
14:32:52
Это было при наличии опыта в других ЯП, да?
Только в императивных. Я тогда умел в Java (на уровне хорошего студента), C++ (похуже) и C# (совсем плохо, на уровне неотличения от C++).

Artemy
15.05.2017
14:35:21
А, ну другая ситуация. Я вот на момент знакомства с Хаскеллем только-только в ООП въезжал.

Илья
15.05.2017
14:35:35
Только в императивных. Я тогда умел в Java (на уровне хорошего студента), C++ (похуже) и C# (совсем плохо, на уровне неотличения от C++).
После джавы шарп учить наверное изи. Так то я считаю они почти одинаковые, только в сишарпе намного больше синтаксического сахара. А вот после сишарпа джаву учить совсем печаль. Слишком к сахарку пристрастившись. ?

Artemy
15.05.2017
14:35:35
Так что был свеж, так сказать. :)

Алекс
15.05.2017
15:16:34
Вопрос из области философии.. может ли быть основным несколько или только один, а другие если только как опции? Ведь язык программирования это как способ думать. Нельзя же думать на нескольких языках сразу..

Most
15.05.2017
15:16:55
Нельзя на языках программирования думать :\

Artemy
15.05.2017
15:17:34
:D

Google
Most
15.05.2017
15:17:45
адепты брейнфака в студию)

Roman
15.05.2017
15:56:27
Привет!

Volha
15.05.2017
15:56:41
привет)

Roman
15.05.2017
15:57:01
привет)
Есть опыт с F#? Есть чем поделиться?

Volha
15.05.2017
15:58:10
серьёзного опыта, опыта в продакшне пока увы нету( изучение и баловство только

Volha
15.05.2017
15:59:13
давненько, с 2013

Admin
ERROR: S client not available

Volha
15.05.2017
15:59:43
в смысле, тогда заинтересовалась

Roman
15.05.2017
16:00:16
Круто. А сейчас основной язык это C#?

Volha
15.05.2017
16:00:29
ага

Roman
15.05.2017
16:00:50
Добро пожаловать!)

Volha
15.05.2017
16:00:55
спасибо :)

Sergey
15.05.2017
17:13:57
))

Volha
15.05.2017
17:15:31
:) викли привёл и сюда

Sergey
15.05.2017
17:17:46
я отправил ссылку куда только мог)

Алекс
15.05.2017
17:21:58
Нельзя на языках программирования думать :\
Очень даже можно как же ещё то

Igor
15.05.2017
17:22:49
Очень даже можно как же ещё то
парадигмах еще можно, а языки приходят и уходят

Илья
15.05.2017
17:43:03
У меня такой пример и вопрос к нему. let foo () = // doing something () let foo2 () = foo foo foo () Мне выдает варнинги на вызовы foo: The expression is a function value, i.e. is missing arguments. Its type is unit -> unit. Как быть? Если поставить перед каждым вызовом ignore foo то варнинги пропадают. Но как-то не хочется везде игнор делать...

Google
Илья
15.05.2017
17:44:59
Илья
15.05.2017
17:45:23
аа понял

Ivan
15.05.2017
19:12:33
@sergey_tihon Есть какая нибудь инсайдерская информация о РЕАЛЬНО планируемых изменениях в C#, F#. Все ж вы там вроде поближе ?

Evgeniy
15.05.2017
19:13:15
Ivan Все планируемые изменения в F# обсуждаются на гитхабе.

Akhmed
15.05.2017
19:14:04
@sergey_tihon Есть какая нибудь инсайдерская информация о РЕАЛЬНО планируемых изменениях в C#, F#. Все ж вы там вроде поближе ?
А почему то о чем они сами рассказывают и то что обсуждается на гитхабе (который с завидной регулярностью становятся реальными) сейчас подверглись сомнению?

Ivan
15.05.2017
19:14:44
Не совсем. Есть решения которые приниманимаются без нас. Они выбираются из нашего пула, но их приоритет зависит от общего настроения оплачиваемых членов сообщества

Evgeniy
15.05.2017
19:15:14
Ivan Каких таких "оплачиваемых членов сообщества"?

Ivan
15.05.2017
19:15:28
Из Microsoft

Evgeniy
15.05.2017
19:15:32
Разработка F# целиком лежит на Сайме и опенсорс сообществе.

Ivan
15.05.2017
19:16:13
Сайм один мз самых влиятельных сотрудников Microsoft, как z gjybvf.

как я понимаю

Evgeniy
15.05.2017
19:16:32
Ivan И он все обсуждает на гитхабе.

Ivan
15.05.2017
19:17:09
Вот и интересно, как они строят взаимотношения внутри трех команд

Кто отвечает за что, и как это планируется. Ведь, я повторюсь, те же GADT обсуждаются в разных ветках сообщества - C#, F#, .NET CLR/ И похоже к решению, что что то делать надо, пришли все, но кто рискнет быть первым

Evgeniy
15.05.2017
19:19:21
.__.

Ivan Не, извини, F# стоит в стороне.

Страница 129 из 772