Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.70/254: Рейтинг темы: голосов - 254, средняя оценка - 4.70
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
11.02.2015, 06:27  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от pycture Посмотреть сообщение
?
Перестаньте скулить и решайте задачу.
Цитата Сообщение от castorsky Посмотреть сообщение
Это функции "частично определенные" ну или как-то так, могу путаться в терминах языка haskell. Они могут передаваться как аргументы и возвращаться из других функций.
Не знал. Первый раз слышу. Редко функциональными языками пользовался. Изучал сегодня ночью, каких плюшек нет в F#. Вот и придумал условие, чтобы pycture пришлось писать велосипеды более, чем на 60 строчек кода.
Цитата Сообщение от castorsky Посмотреть сообщение
Ну кто знает что там в эмайти используют для исследований?
А что вообще исследуют с помощью функциональных языков? Приведите примеры.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
11.02.2015, 06:28
А циклы пяти уровнейвлеженности наверное тарас научил xD
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
11.02.2015, 06:31  [ТС]
Цитата Сообщение от castorsky Посмотреть сообщение
А циклы пяти уровнейвлеженности наверное тарас научил xD
Не. Я сам всё придумал. Просто в олимпиадных задачах часто используют очень многовложенные циклы, особенно в задачах на динамику. Думаю, что у F# возникнут проблемы с "пробросом" большого количества вложенных циклов (придётся велики писать, чтобы вызвать аналог goto). Я с тарасом не общался.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
11.02.2015, 06:36
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
А что вообще исследуют с помощью функциональных языков? Приведите примеры.
Буржуи активно используют scala, clojure для веб, например. Весь "machine learning" это декларативщина, ой да мало ли.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
11.02.2015, 06:49  [ТС]
Цитата Сообщение от castorsky Посмотреть сообщение
Весь "machine learning" это декларативщина, ой да мало ли.
Понятно. Я даже не слышал про "machine learning" раньше. Вы оставляли раньше ссылку про Python и Common Lisp, так вот я не совсем согласен, что там написано. В Python'e нет стандартных массивов вообще. Там есть высокоуровневые кортежи, которые ни чем не уступают массивам, а даже превосходят их по всем параметрам. На Python'e работать просто и удобно. Можно создать что-то действительно большое за короткое время.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
11.02.2015, 07:19
Ну поскольку Вы ничегошеньки не понимаете в ФП, то Ваше задание кажется "мощным", а на фп языках это все пишется довольно просто и без особых усилий потому что есть continuations. Впрочем тут и без них можно.
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
;; racket-lang.org
(define (foo)
  (display "ololo: ")
  (let ((val (read)))
    (unless (and (number? val) (integer? val))
      (error val))
    val))
 
(define (main)
  (let/cc return
    (let loop1 ()
      (printf "loop1 here~n")
      (let loop2 ()
        (printf "loop2 here~n")
        (let loop3 ()
          (printf "loop3 here~n")
          (match (foo)
            (1 (return (loop1)))
            (2 (return (loop2)))
            (3 (return (loop3)))
            (_ (return))))))))
(main)
Добавлено через 28 секунд
Кликните здесь для просмотра всего текста
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
loop1 here
loop2 here
loop3 here
ololo: 1
loop1 here
loop2 here
loop3 here
ololo: 2
loop2 here
loop3 here
ololo: 3
loop3 here
ololo: -1


Добавлено через 6 минут
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Я даже не слышал про "machine learning" раньше.
ну это как бы всё вытекающее из кибернетики (да да именно того чем должны заниматься прикладники).
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
11.02.2015, 07:21  [ТС]
Цитата Сообщение от castorsky Посмотреть сообщение
а на фп языках это все пишется довольно просто и без особых усилий потому что есть continuations.
Поэтому я и написал использовать циклы, потому что в F# они есть. Чего-то pycture завис со своим F#.
Я так понимаю, что функция foo() в вашем решении не void?
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
11.02.2015, 07:31
вон вместо дэ лучше "Unix System Programming with Standard ML" больше пользы будет, тем более я знаю Вы блестяще разбираетесь в сях.

Добавлено через 2 минуты
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Я так понимаю, что функция foo() в вашем решении не void?
возвращает val, если val не целое число - генерируется исключение. Кстати стек при этом не разматывается как в дэ. Ну и в общем - в лиспе всегда возвращается последнее выражение.

Добавлено через 7 минут
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Поэтому я и написал использовать циклы, потому что в F# они есть.
Очнитесь, циклы это то без чего можно жить. Поэтому постановка задачи "... обязательно использовать циклы на ФЯП..." нелепа. Вон какой говнокод выше получился из-за этого.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
11.02.2015, 07:36  [ТС]
Цитата Сообщение от castorsky Посмотреть сообщение
возвращает val
Ну вот. А надо, чтобы функция была void. Есть замена указателям в Lisp?
Цитата Сообщение от castorsky Посмотреть сообщение
да да именно того чем должны заниматься прикладники
Должны, но не занимаются. Они MATLAB'ом больше парятся.
Цитата Сообщение от castorsky Посмотреть сообщение
я знаю Вы блестяще разбираетесь в сях.
Я знаю чистый C, но этого знания мало, чтобы знать C полностью, и тем более C++.
Цитата Сообщение от castorsky Посмотреть сообщение
Очнитесь, циклы это то без чего можно жить.
А я этого и не отрицаю.
0
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
11.02.2015, 07:51
так поинтересней будет
Lisp
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
(define (foo)
  (display "ololo: ")
  (let ((val (read)))
    (unless (and (number? val) (integer? val))
      (error val))
    val))
 
(define (bar loop-lst)
  (match (foo)
    (1 (first loop-lst))
    (2 (second loop-lst))
    (3 (third loop-lst))
    (_ (lambda () (void)))))
 
(define (main)
  (letrec 
      ((loop3 
        (lambda ()
          (printf "loop3 here~n")
          ((bar `(,loop1 ,loop2 ,loop3))))) ;; здесь выбираем нужную функцию из bar и выполняем ее
       (loop2 (lambda ()
                (printf "loop2 here~n")
                (loop3)))
       (loop1 (lambda ()
                (printf "loop1 here~n")
                (loop2))))
    (loop1)))
 
(main)
Добавлено через 7 минут
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Есть замена указателям в Lisp?
В cl есть, но это racket. И я не стану этого делать даже под пытками xD
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
А я этого и не отрицаю.
Так Вы требуете решения нв ФЯП обяательно с помощью циклов... это же неверно.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
11.02.2015, 08:00  [ТС]
Цитата Сообщение от castorsky Посмотреть сообщение
Так Вы требуете решения нв ФЯП обяательно с помощью циклов... это же неверно.
Я требую этого от pycture.
Цитата Сообщение от castorsky Посмотреть сообщение
В cl есть, но это racket.
Да, я уже успел это понять, когда код не запустился на ideone.com.
Цитата Сообщение от castorsky Посмотреть сообщение
И я не стану этого делать даже под пытками xD
Просто смысла сравнивать D и ФЯП нет никакого. Они предназначены для разных целей. Пускай pycture попытается реализовать умный указатель на F#. Я понимаю, что есть ещё смысл сравнивать C# и D, но опять же в C# тоже нет указателей.
Цитата Сообщение от castorsky Посмотреть сообщение
так поинтересней будет
Да, я практически ничего не понял.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
11.02.2015, 10:33
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Ну вот. А надо, чтобы функция была void
Вообще-то подобная практика (передача указателя на значение и изменение его в вызванной процедуре) крайне не рекомендована к применению даже в Си. Но если очень хочется

Lisp
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
(define (foo label)
  (display "ololo: ")
  (let ((val (read)))
    (if (and (number? val) (integer? val))
        (set-box! label val)
        (error val)))
  (void))
 
(define (bar label . loops)
  (match (unbox label)
    (1 (first  loops))
    (2 (second loops))
    (3 (third  loops))
    (_ (lambda () (displayln "The end.")))))
 
(define (main)
  (define label (box 0))
  (define (loop1)
    (printf "loop1 here~n")
    (loop2))
  (define (loop2)
    (printf "loop2 here~n")
    (loop3))
  (define (loop3)
    (printf "loop3 here~n")
    (foo label)
    ((bar label loop1 loop2 loop3)))
  (loop1))
 
(main)

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
loop1 here
loop2 here
loop3 here
ololo: 2
loop2 here
loop3 here
ololo: 3
loop3 here
ololo: 1
loop1 here
loop2 here
loop3 here
ololo: 0
The end.
На F# можно переписать практически 1-в-1.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
11.02.2015, 10:44  [ТС]
Цитата Сообщение от korvin_ Посмотреть сообщение
крайне не рекомендована к применению даже в Си.
Чего-то я не помню, чтобы создатель C это не рекомендовал. Он говорил про то, что такой указатель, может навредить только некомпетентному программисту.
Цитата Сообщение от korvin_ Посмотреть сообщение
На F# можно переписать практически 1-в-1.
Мне нужно с циклами, а не с продолжениями.
Цитата Сообщение от korvin_ Посмотреть сообщение
displayln
Смешные названия: dispayln, loop. Я к таким не привык.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
11.02.2015, 10:53
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Чего-то я не помню, чтобы создатель C это не рекомендовал.
Кроме создателя Си есть куча других адекватных людей.

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Он говорил про то, что такой указатель, может навредить только некомпетентному программисту.
Ссылку на фразу?

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Мне нужно с циклами, а не с продолжениями.
1) Тут нет продолжений. 2) Зачем? Любишь многоступенчатые вложенности? Многие не любят.

Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Смешные названия: dispayln, loop. Я к таким не привык.
Что в них смешного? Если тебе пальчик показать, тоже посмеёшься?
0
Модератор
 Аватар для Curry
5164 / 3523 / 536
Регистрация: 01.06.2013
Сообщений: 7,672
Записей в блоге: 9
11.02.2015, 10:59
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Вы просто сыграли на тех же самых гуслях: воспользовались тем, что в D нет такой операции ->.
Если я правильно понял ограничение задачи с xor-ами, то Вы могли бы написать что то вроде
C++
1
2
3
      int f(int x, int y, int z){
           return ((x!=y) != (z==1))? 1 : 0;
      }
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
11.02.2015, 11:00  [ТС]
Цитата Сообщение от korvin_ Посмотреть сообщение
Что в них смешного? Если тебе пальчик показать, тоже посмеёшься?
А то, что лисперы суют свой код не в свои темы.
displayln - это ж надо было такое придумать.
Цитата Сообщение от korvin_ Посмотреть сообщение
1) Тут нет продолжений. 2) Зачем? Любишь многоступенчатые вложенности? Многие не любят.
Это условия моего задания, если ты тоже захотел его так выполнить.
Цитата Сообщение от korvin_ Посмотреть сообщение
Кроме создателя Си есть куча других адекватных людей.
Кто они?
Цитата Сообщение от korvin_ Посмотреть сообщение
Ссылку на фразу?
Миниатюры
D vs C++  
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
11.02.2015, 11:05  [ТС]
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Если я правильно понял ограничение задачи с xor-ами, то Вы могли бы написать что то вроде
Я до такого не додумался.
0
Модератор
 Аватар для Curry
5164 / 3523 / 536
Регистрация: 01.06.2013
Сообщений: 7,672
Записей в блоге: 9
11.02.2015, 11:21
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
А что, например, в Haskell нет операции "+", "-" и т. д. Или функциональные языки функции каждый раз вызывают при виде подобных символов ASCII?
В Haskell точно так же, как в большинстве языков 2+3*5 == 17
Кликните здесь для просмотра всего текста
но кроме записи 3*5 возможна ещё и (*) 3 5
В Нaskell аргументы функции не окружают скобками и не записывают через запятую, по этому, последняя запись ни чем не отличается от вызова функции, например, целочисленного деления div 5 3, которая, в свою очередь, может быть записана между своими аргументами (инфиксная запись) 5 `div` 3. Т.е. в языке нет различия между операторами и функциями.
0
 Аватар для Dennis Ritchie
555 / 148 / 58
Регистрация: 27.07.2014
Сообщений: 2,446
11.02.2015, 11:22  [ТС]
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
но кроме записи 3*5 возможна ещё и (*) 3 5
Такая запись удобна для стека.
0
Модератор
 Аватар для Curry
5164 / 3523 / 536
Регистрация: 01.06.2013
Сообщений: 7,672
Записей в блоге: 9
11.02.2015, 11:31
Цитата Сообщение от castorsky Посмотреть сообщение
Это функции "частично определенные"
Бывает частичное применение функций, но это не к месту. А про (+), (*) ... я выше ответил.

Добавлено через 7 минут
Цитата Сообщение от Dennis Ritchie Посмотреть сообщение
Такая запись удобна для стека.
Например, умножить все элементы списка на 3
Haskell
1
mul3 lst = map (3*) lst
где (3*) - частичное применение функции (*).
Кликните здесь для просмотра всего текста
В map передаётся функция одного аргумента, вроде let m3 x = 3 * x На самом деле, ещё короче
Haskell
1
mul3 = map (3*)
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