|
|
|
list comprehension в F#
|
|||
|---|---|---|---|
|
#18+
есть такой синтаксический сахар, как замена do yield на -> . Эти выражения эквивалентны: Код: plaintext 1. 2. Но я был удивлен когда выражение Код: plaintext Код: plaintext "for .. in .. -> .." работает, а "for .. to .. -> .." - нет Серьезной проблемы здесь нет. Просто возникли вопросы к тем кто использует f#: Может это не единственный баг, а таких много? Действительно ли Майкрософт будет продвигать этот язык? Получается ли у вас органично сочетать функциональный стиль с дотнетовскими библиотеками, или нужно выработать новый, гибридный стиль программирования?(на это вопрос прошу ответить не только f#-еров, но и программистов занимающимися другими гибридными языками для платформ .net и java(nemerle, scala итд.)). Исправлен ли это баг в новых редакциях(у меня vs2010beta2)? p.s. Пол года назад на дотнетовском форуме я уже задавал вопрос по перспективности F#, но меня там встретили с шутками: "айтизагибаетсо", "не податься ли те в гитаристы" и тд. Сейчас я нашел время заняться этим языком, но уже после первых примеров найдя баги, был огорчен. Поэтому прошу уже без шуток обсудить данный язык. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2010, 15:02:04 |
|
||
|
list comprehension в F#
|
|||
|---|---|---|---|
|
#18+
в релизе тоже самое, но я бы не стал вот так называть это багой - для этого надо найти в language specification такое правило. Я думаю еще рано говорить о наличии багов в релизе F# так как он вышел в начале недели и данных по использованию, думаю, еще мало. Сам использовал эпизодически багов не видел - было странное поведение VS при редактировании fsyaml файлов, но терпимое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2010, 16:17:35 |
|
||
|
list comprehension в F#
|
|||
|---|---|---|---|
|
#18+
см. грамматику: http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/spec.pdf -> это не слово заменяющее yield а часть спецсинтаксиса Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2010, 16:30:31 |
|
||
|
list comprehension в F#
|
|||
|---|---|---|---|
|
#18+
belugin4в релизе тоже самое, но я бы не стал вот так называть это багой - для этого надо найти в language specification такое правило. Я думаю еще рано говорить о наличии багов в релизе F# так как он вышел в начале недели и данных по использованию, думаю, еще мало. Сам использовал эпизодически багов не видел - было странное поведение VS при редактировании fsyaml файлов, но терпимое Programming F# let allIntsSeq = seq { for i = 0 to System.Int32.MaxValue -> i } пример с книги Programming F#, у меня не скомпилился. Думаю, если автор писал так, то это не противоречит спецификации, хотя ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2010, 16:30:52 |
|
||
|
list comprehension в F#
|
|||
|---|---|---|---|
|
#18+
В релизе оно дает вот такую ошибку "Error 1 The use of '->' in sequence and computation expressions is limited to the form 'for pat in expr -> expr'. Use the syntax 'for ... in ... do ... yield...' to generate elements in more complex sequence expressions." То есть это не бага, это фича! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2010, 16:34:54 |
|
||
|
list comprehension в F#
|
|||
|---|---|---|---|
|
#18+
belugin4см. грамматику: http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/spec.pdf -> это не слово заменяющее yield а часть спецсинтаксиса Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Programming f# When using for loops within list comprehensions, you can simplify the code by using -> instead of do yield. The following two code snippets are identical: // Generate the first ten multiples of a number let multiplesOf x = [ for i in 1 .. 10 do yield x * i ] // Simplified list comprehension let multiplesOf2 x = [ for i in 1 .. 10 -> x * i ] ссылался на книгу. спецификацию не читал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2010, 16:35:18 |
|
||
|
list comprehension в F#
|
|||
|---|---|---|---|
|
#18+
belugin4В релизе оно дает вот такую ошибку "Error 1 The use of '->' in sequence and computation expressions is limited to the form 'for pat in expr -> expr'. Use the syntax 'for ... in ... do ... yield...' to generate elements in more complex sequence expressions." То есть это не бага, это фича! мен студия выдала это: [src]Error 1 Unexpected symbol '->' in expression. Expected 'do' or other token.[/SRC в релизе видно изменили сообщение об обшыбке, вместо того чтобы пофиксить багу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2010, 16:38:30 |
|
||
|
list comprehension в F#
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNДумаю, если автор писал так, то это не противоречит спецификации, хотя ... В книгах бывают опечатки, язык F# менялся несколько раз. Фактически 2.0 - первый финальный релиз. см например список изменений октябрьского ctp ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2010, 16:40:05 |
|
||
|
list comprehension в F#
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaN в релизе видно изменили сообщение об обшыбке, вместо того чтобы пофиксить багу. Если багой называть противоречие книжке, то можно так сказать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2010, 16:43:00 |
|
||
|
list comprehension в F#
|
|||
|---|---|---|---|
|
#18+
belugin4ZyK_BotaN в релизе видно изменили сообщение об обшыбке, вместо того чтобы пофиксить багу. Если багой называть противоречие книжке, то можно так сказать :) это была шутка(но с ну удивлюсь, если с долей правды) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2010, 16:47:37 |
|
||
|
list comprehension в F#
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaN, в спецификации про list comprehensions ничего не нашел. Если оно там есть, то, пожалуйста, ткните меня носом, на какой странице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2010, 17:20:12 |
|
||
|
list comprehension в F#
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaN, Как видно из приведенного мной кусочка BNF оно называется там computed list expression. Короткая форма с -> - short-comp-expr ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2010, 17:45:59 |
|
||
|
list comprehension в F#
|
|||
|---|---|---|---|
|
#18+
belugin4ZyK_BotaN, Как видно из приведенного мной кусочка BNF оно называется там computed list expression. Короткая форма с -> - short-comp-expr спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2010, 18:16:12 |
|
||
|
list comprehension в F#
|
|||
|---|---|---|---|
|
#18+
Пока сам не увидел спецификацию - не верил. Хорошо что в релизе более информативное сообщение об ошибке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2010, 18:43:08 |
|
||
|
list comprehension в F#
|
|||
|---|---|---|---|
|
#18+
Решил протестировать лямбда исчисление на F#. Код: plaintext 1. 2. 3. При записи выражения: Код: plaintext гавкает авторstdin(27,5): error FS0030: Value restriction. The value 'x' has been inferred to have generic type val x : ('_a -> '_b -> '_a) Either make the arguments to 'x' explicit or, if you do not intend for it to be generic, add a type annotation. при этом в хаскеле все работает отлично. 1. Из-за какого отличия в системе типов F# от хаскеля не работает этот код? Что мешает в качестве результата вычислений получить генерик?(я думал в дот нет генерики существуют в момент выполнения) 2. Какие можно добавить аннотации чтобы оно заработало?(может дурацкий вопрос, но мне это не очевидно) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2010, 10:31:34 |
|
||
|
list comprehension в F#
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaN, А не будет ли у Microsoft с F# то, что стало с J# и J++? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2010, 13:48:42 |
|
||
|
list comprehension в F#
|
|||
|---|---|---|---|
|
#18+
ПилотажныйZyK_BotaN, А не будет ли у Microsoft с F# то, что стало с J# и J++? хз, но я не думаю что J# и J++ были для кого-то интересны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2010, 13:52:17 |
|
||
|
list comprehension в F#
|
|||
|---|---|---|---|
|
#18+
бестиповое лямбда-исчислениее, такое бестиповое решил реализовать на хаскеле Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. умножение и сложение работают отлично декремент также работает на попытку вычитания, гавкает ошибка: авторcannot construct the infinite type переписал слово в слово на динамической схеме, все отлично работает вот только синтаксис хасклея для записи лямбда выражений мне больше нравится :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2010, 14:03:19 |
|
||
|
list comprehension в F#
|
|||
|---|---|---|---|
|
#18+
[quot ZyK_BotaNхз, но я не думаю что J# и J++ были для кого-то интересны.[/quot] Ну J++ был весьма хорош в свое время - например Rational на нем писал ORM для VB (благодаря хорошей интеграции с COM). Вот только засудили бедняжечку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.05.2010, 14:09:42 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=36580948&tid=1343699]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
193ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 496ms |

| 0 / 0 |
