Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.70/254: Рейтинг темы: голосов - 254, средняя оценка - 4.70
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Закрытая тема Создать тему
Новые блоги и статьи
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru