Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.70/254: Рейтинг темы: голосов - 254, средняя оценка - 4.70
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2773 / 491
Регистрация: 28.04.2012
Сообщений: 8,760
11.02.2015, 00:05
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от castorsky Посмотреть сообщение
ааа, табличное определение... ну от 3х переменных можно, не критично. for*/... изracket умеет таблицы мастерить.
Зачем, если в Racket есть тот же match и код F# переписывается практически один в один?

Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#lang racket
 
(define/match (f x y z)
  ((0 0 0) 0)
  ((0 1 1) 0)
  ((1 0 1) 0)
  ((1 1 0) 0)
  ((_ _ _) 1))
 
(let ((bits '(0 1)))
  (for* ((a bits)
         (b bits)
         (c bits))
    (printf "~a xor ~a xor ~a = ~a~n" a b c (f a b c))))
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
11.02.2015, 00:58
Цитата Сообщение от korvin_ Посмотреть сообщение
Зачем, если в Racket есть тот же match и код F# переписывается практически один в один?
я когда писал пример еще не видел решения, ну то есть не врубился что речь о pm, хотя в условие "не использовать логических и битовых операций" вложился.

Добавлено через 44 минуты
Цитата Сообщение от korvin_ Посмотреть сообщение
Зачем
Я как всегда с торможением. Это же очевидно, множество состояний ДКА и функция переходов.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
11.02.2015, 02:43  [ТС]
Цитата Сообщение от pycture Посмотреть сообщение
как нетрудно заметить хваленый дэ как язык он из себя вообще ничего не представляет и без наличия нужной библиотеки мгновенно наступает ...опа
Вы просто сыграли на тех же самых гуслях: воспользовались тем, что в D нет такой операции ->.
0
Заблокирован
11.02.2015, 02:53
Dennis Ritchie, возьмем следующий пример?
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
11.02.2015, 02:55  [ТС]
Цитата Сообщение от Ev_Hyper Посмотреть сообщение
Dennis Ritchie, возьмем следующий пример?
Ну теперь мой черёд задавать пример.
0
Заблокирован
11.02.2015, 02:58
Dennis Ritchie, условие только огласите
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
11.02.2015, 03:00  [ТС]
Ev_Hyper, как только придумаю, оглашу.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
11.02.2015, 03:03
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Вы просто сыграли на тех же самых гуслях: воспользовались тем, что в D нет такой операции ->.
лол, речь вообще-то о pm.
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
как только придумаю, оглашу
ждемс
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
11.02.2015, 04:53  [ТС]
От D-сообщеста (они сказали, что F# тухлый):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import std.stdio, std.algorithm, std.typecons;
 
int f(T)(T t) if (isTuple!T) {
    return t.predSwitch(
        tuple(0, 0, 0), 0,
        tuple(0, 1, 1), 0,
        tuple(1, 0, 1), 0,
        tuple(1, 1, 0), 0,
        /*else*/ 1);
}
 
void main() {
    foreach (immutable a; 0 .. 2)
        foreach (immutable b; 0 .. 2)
            foreach (immutable c; 0 .. 2)
                writefln("%d xor %d xor %d = %d", a, b, c, tuple(a, b, c).f);
}
C++
1
2
3
4
5
6
7
8
void main() {
    import std.stdio;
 
    foreach (immutable a; 0 .. 2)
        foreach (immutable b; 0 .. 2)
            foreach (immutable c; 0 .. 2)
                writefln("%d xor %d xor %d = %d", a, b, c, (a + b + c) % 2);
}
Задание. Написать на F# программу, в которой есть 5 вложенных циклов (названия итераторов должны совпадать i, j, k, l, m):
C++
1
2
3
4
5
for (int i = 0; i < 5; ++i)
    for (int j = 0; j < 5; ++j)
        for (int k = 0; k < 5; ++k)
            for (int l = 0; l < 5; ++l)
                for (int m = 0; m < 5; ++m)
Пронумеруем циклы цифрами: 1, 2, 3, 4, 5. Первому циклу сверху соответствует цифра 1, для остальных циклов всё соответственно. В теле каждого цикла должен присутствовать оператор, который выводит на экран цифры, соответствующие циклу без перевода строки '\n'. Например, если в данный момент мы находимся в первом цикле на первой итерации, то программа должна напечатать 1, затем перейти во второй вложенный цикл и напечатать 2 и т. д. Когда программа достигнет последний (пятый) цикл, она должна напечатать цифру 5, а затем вызвать функцию void foo(label). В этой функции вам разрешается инициализировать одну новую переменную, затем функция должна напечатать фразу "Enter a label :" без кавычек и перевести каретку на новую строчку. Затем программа должна считать с клавиатуры целое число в новую переменную и присвоить значение этой переменной в label. На этом функция void foo(label) должна завершить свою работу. Дальше основная программа должна напечатать фразу "newlabel = " без кавычек и значение переменной label, затем осуществить перевод каретки на новую строку. Не забывайте, что мы всё ещё находимся в теле 5 цикла. Теперь мы должны проверить, если переменная label соответствует одному из номеров циклов: 1, 2, 3, 4, 5, - то мы должны продолжить выполнение соответствующего номеру label цикла. Если значение переменной label не удовлетворяет ни одному из номеров цикла, то мы должны закончить работу первого цикла и вывести на экран фразу "The end!" с переводом каретки.
Дополнительное условие (обязательно для выполнения задания): переменная label должна быть объявлена в основной функции (main()), вне поля видимости функции void foo(label), и инициализирована нулём.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
11.02.2015, 05:40
Вот это бред, выставлять как достоинство передачу по ссылке и деструктивное связывание. Вообще-то sa нынче в моде. Но эта возможность есть почти в любом языке на случай невозможности поступить иначе. Что там дальше? Продолжения? так они тоже давно есть. Тухлая императивщина. Я уже от Вас научился этим противным словечкам.

Добавлено через 3 минуты
хотя возможности впечатляют
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Написать на F# программу, в которой есть 5 вложенных циклов
А если в языке нет циклов? Тогда что делать?
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
11.02.2015, 05:46
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
import std.stdio, std.algorithm, std.typecons
ой баяй. обязъянки из аглицкого сообщества нашли свежие бананчики сами разумеется они осилить не смогли даже сиплюсисты такие задачи на раз осиливают без библиотек - видно дэ совсем никакой
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
11.02.2015, 05:52  [ТС]
Цитата Сообщение от castorsky Посмотреть сообщение
Вот это бред, выставлять как достоинство передачу по ссылке и деструктивное связывание.
Бред - это выставлять операцию ->, как гигантское достоинство языка. Мне интересно посмотреть, чем там указатели заменили в F#.
Цитата Сообщение от castorsky Посмотреть сообщение
Тухлая императивщина. Я уже от Вас научился этим противным словечкам.
Может быть, вы приведёте пример человека, который на одной функциональщине написал целую ОС. Где вы будете использовать эту чистую функциональность? В научных математических вычислениях? Олимпиадках? Всё. Где ещё?
Цитата Сообщение от castorsky Посмотреть сообщение
А если в языке нет циклов? Тогда что делать?
Написать аналог средствами языка.

Добавлено через 4 минуты
Цитата Сообщение от pycture Посмотреть сообщение
ой баяй. обязъянки из аглицкого сообщества нашли свежие бананчики
Это ни библиотеки, а заголовочные файлы, в которых объявлены функции. Стандартная библиотека D называется Phobos.
Я первый раз вижу такого примата, который говорит, что использование библиотек (заголовочных файлов) - это страшное зло. Может быть, вы школьный преподаватель F#'па, который запрещает ребятишкам использовать все возможности языка? Впрочем, не отвлекайтесь, вы должны задачку решать.
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
11.02.2015, 05:56
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
t.predSwitch( tuple(0, 0, 0), 0, tuple(0, 1, 1), 0, tuple(1, 0, 1), 0, tuple(1, 1, 0), 0, /*else*/ 1)
жутчайший фейл. tuple вызовется 4 раза создав 4 тупла даже если они не нужны. фейлим по скорости и памяти? дэ-вей будет новый мем
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
11.02.2015, 05:59
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Бред - это выставлять операцию ->, как гигантское достоинство языка.
Я открою Вам секрет. F# функциональный язык, там нет никаких операций.
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Может быть, вы приведёте пример человека, который на одной функциональщине написал целую ОС.
тыц
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Где вы будете использовать эту чистую функциональность? В научных математических вычислениях? Олимпиадках?
Ну как бы зарабатываю. А вот дэ только на олимпиадки и годен.
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Написать аналог средствами языка
Зачем, если можно и без них жить? Рекурсия же есть, продолжения же есть. Циклы, так сахар.

Добавлено через 3 минуты
Нет, он действительно не понял что суть не в "операции стрелочка", а в сопоставлении с образцом. Интересно долго еще осилять будет.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
11.02.2015, 06:07  [ТС]
Цитата Сообщение от castorsky Посмотреть сообщение
тыц
Крутая ось получилась.
Цитата Сообщение от pycture Посмотреть сообщение
даже сиплюсисты такие задачи на раз осиливают без библиотек
Чем осиливают? Как осиливают? Продемонстрируйте?
Цитата Сообщение от pycture Посмотреть сообщение
фейлим по скорости и памяти?
Если использовать все возможности языка, то D зафейлит любой F# и по скорости, и по памяти.
Цитата Сообщение от castorsky Посмотреть сообщение
Нет, он действительно не понял что суть не в "операции стрелочка", а в сопоставлении с образцом.
Осилил.
Цитата Сообщение от castorsky Посмотреть сообщение
А вот дэ только на олимпиадки и годен.
Чтобы язык был пригоден для олимпиадок, он должен быть достаточно мощным, чтобы укладываться и по скорости, и по памяти. Ни один функциональный программист, не добивался таких же успехов, как императивные программисты. Функциональщики тащатся где-то в хвосте.
Цитата Сообщение от castorsky Посмотреть сообщение
Я открою Вам секрет. F# функциональный язык, там нет никаких операций.
А что, например, в Haskell нет операции "+", "-" и т. д. Или функциональные языки функции каждый раз вызывают при виде подобных символов ASCII?
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
11.02.2015, 06:14
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Пронумеруем циклы цифрами: 1, 2, 3, 4, 5.... и т.д.
что за бред? кто так условия ставит? пишут что надо получить, а не какие движения при этом надо сделать (хотя он же императивщик о чем это я). дополнительным учловием может являтся что нельзя использовать. я как задачу ставил? реализовать функцию такую , арифметикой не пользоваться. где то было указание как что должно называться и где что иницилизироваться? не было.
переписать условие во вменяймой форме.
а до тех пор дэ остается самый фейленным языком
Добавлено через 32 секунды
Цитата Сообщение от castorsky Посмотреть сообщение
Интересно долго еще осилять будет.
он клялся этого никогда не делать

Добавлено через 29 секунд
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Продемонстрируйте?
это к ним. можут уговорите им показать класс, а я на цепепе не пишу

Добавлено через 1 минуту
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
D зафейлит
дык дэ уже зафейлил на туплах
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
11.02.2015, 06:16  [ТС]
Цитата Сообщение от pycture Посмотреть сообщение
переписать условие во вменяймой форме.
Ну вы же ставите дурацкие условия про библиотеки. А я решил поставить тупые императивные условия для вашего одуванчика F#. Не отвлекайтесь - главное решайте.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
11.02.2015, 06:18
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
А что, например, в Haskell нет операции "+", "-" и т. д. Или функциональные языки функции каждый раз вызывают при виде подобных символов ASCII?
Представьте себе. Это функции "частично определенные" ну или как-то так, могу путаться в терминах языка haskell. Они могут передаваться как аргументы и возвращаться из других функций. Вобщем почти такие же сущности как и "переменные". Вот "переменная" это для функциональщиков действительно в некотором чужеродная сущность.
0
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
11.02.2015, 06:19
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Ну вы же ставите дурацкие условия про библиотеки.
дурацкие условия про библиотеки показывают способность быстро выразить на языке самостоятельно то чего не найдется в библиотеках (такую очевидность даже школьникам разжевывать не надо), а что показывают
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
тупые императивные условия
?
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
11.02.2015, 06:24
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Крутая ось получилась
Ну кто знает что там в эмайти используют для исследований? Вот еще, забыл уже что сам ее читал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Закрытая тема Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru