Форум программистов, компьютерный форум, киберфорум
Священные войны
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.82/55: Рейтинг темы: голосов - 55, средняя оценка - 4.82
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
01.02.2015, 01:09
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Можно макросом сделать.
Сделай на Haskell макросом. Хочется посмотреть.

Добавлено через 3 минуты
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
А динамическая всякое позволяет и получить можно "розовую козу с жёлтою полосой ..."
Конечно можно. Но ведь не всегда целесообразно запрещать фичу даже если она потенциально опасна. Этакими действиями мы можем в смирительной рубашке оказаться в комнате обитой подушками. Даже приведенный korvin_-ом достаточно простой пример создаёт какие-то невероятные проблемы в невероятно мощном Haskell. Как же так?

Добавлено через 6 минут
Цитата Сообщение от taras atavin Посмотреть сообщение
Удобна она человеку, для машины не годна.
Блин, Тарас, у человека и машины никаких проблем с понимается префиксной и инфиксной записей нет и быть не может. И то, и то - тривиально. Вообще, батёхрт о инфиксной записи и скобках это ни о чём вообще. Это такие мелочи, что на них похер просто. На эти темы лучше дальше не продолжать - это самоунижение.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.02.2015, 01:09
Ответы с готовыми решениями:

Delphi !? Плюсы и минусы
Почему при поиске работы через Internet в странах Европы и Америки очень редко можно встретить необходимость в Delphi?

Студентская жизнь.Ее плюсы и минусы.
Студентская жизньпрекрасна...Так говорят.А как думаешь ты?

Что вы делаете необычное на форуме(плюсы и минусы)
что вы делаете на форуме не обычного? Ну не так как все... Вот пример: прежде чем ответить кому-либо, почему-то смотрю его профиль,...

262
 Аватар для castorsky
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
01.02.2015, 01:20
Цитата Сообщение от nullxdth Посмотреть сообщение
Но ведь не всегда целесообразно запрещать фичу даже если она потенциально опасна
Вирт же! Бг паскаля против!
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
01.02.2015, 01:49
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Я и демонстрирую что, и на сях такое не работает, и везде при статической типизации.
Стакикопроблемы во всей красе.

Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Функция f принимает, как аргумент, только одну функцию. А ей нужно передавать две - show для int и show для char.
Нет, ей нужно передать только одну функцию show, которая полиморфна по определению и сделать конкретизацию в точке вызова.

Цитата Сообщение от nullxdth Посмотреть сообщение
Но ведь не всегда целесообразно запрещать фичу даже если она потенциально опасна.
И это при том, что в Хаскелле есть «замечательный» unsafePerformIO, позволяющий обойти «типовые ограничения» монады IO.
0
Модератор
 Аватар для Curry
5165 / 3527 / 536
Регистрация: 01.06.2013
Сообщений: 7,677
Записей в блоге: 9
01.02.2015, 03:15
Цитата Сообщение от nullxdth Посмотреть сообщение
Сделай на Haskell макросом. Хочется посмотреть.
Вот. Только макрос обязан быть в отдельном файле по отношению к его применению. Можно ли на всяких ideon-ах компилировать с нескольких файлов не знаю.
Haskell
1
2
3
4
5
6
7
8
{-# LANGUAGE  TemplateHaskell #-}
module F_TH where
 
import Language.Haskell.TH
 
f:: Name -> Q Exp
f n = let m = return $ VarE n 
      in [| (\(l,r) -> ( $m l , $m r )) |]
Haskell
1
2
3
4
5
module Main where
 
import F_TH 
 
main = print $ $(f 'show) (1, 'a')
Цитата Сообщение от nullxdth Посмотреть сообщение
приведенный korvin_-ом достаточно простой пример создаёт какие-то невероятные проблемы в невероятно мощном Haskell.
Пример korvin_ не проходит потому что в Haskell статический полиморфизм. Т.е., по сути, как в плюсах перегруженные ф-ии, что я примером на сях и демонстрировал.

Добавлено через 2 минуты
Цитата Сообщение от korvin_ Посмотреть сообщение
Стакикопроблемы во всей красе.
Стакикопроблемы - не проблемы если писАть грамотно. А то есть языки ... (скажем нейтрально js), которые, как бы говорят: "напиши чё угодно - я как ни будь да пойму".

Добавлено через 21 минуту
Во втором файле (main), первой строкой тоже
Haskell
1
{-# LANGUAGE  TemplateHaskell #-}
надо. Пардон, криво скопипастил.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
01.02.2015, 09:21
Цитата Сообщение от nullxdth Посмотреть сообщение
Блин, Тарас, у человека и машины никаких проблем с понимается ... и инфиксной записей нет и быть не может
А ничего, что она приоритетная и прежде чем считать значение оператора, надо определить, каким по счёту он считается, а из-за этого надо бегать по всему выражению много раз? 2+3*2, сначала считается произведение и оно является операндом плюса. А в польских нотациях возвращаться к пропущенному операнду не надо. Поэтому я в проге, строившей графики инфиксных выражения для y от x, даже не пытался прикрутить к ней эту корягу парсинга, а сделал нормальное преобразование инфиксного выражения в постфиксное и уже графики постфиксных выражений для y от x строились в окне.

Добавлено через 4 минуты
Цитата Сообщение от nullxdth Посмотреть сообщение
Это такие мелочи, что на них похер просто.
Ну да, плевать, что машина на 2+3*2 выдаст 10 вместо восьми. Не смешно.

Добавлено через 12 минут
И вообще все ваши среды и компиляторы - это только инструменты для намагничивания лакированных железом пластиковых пластин.

Добавлено через 2 часа 0 минут
Для человека же это не актуально, так как ассоциативная память изначально хорошо приспособлена для иерархий. Даже более того, в сочетании с дефицитом оперативы и способностью к древовидному парсингу без построения самого дерева именно нотации, разбираемые древовидно, читаются легче, чем безприоритетная запись выражения в столбик. Хотя да префиксная, или постфиксная нотация вместо инфиксной, или инфиксная вместо польской для человека - мелочь. Но инфиксная иногда бывает приятной мелочью, а наличие только польской, да ещё и ровно одной из них - не приятной. Но если инфиксную нотацию можно прикрутить средствами самой прилады, то вносить её в язык нафиг не надо.

Добавлено через 6 минут
Ну и дальше парсера инфиксной нотации не место, а сам парсер проще всего для постфиксной нотации, на втором месте префиксная и на последнем инфиксная.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
01.02.2015, 11:53
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Пример korvin_ не проходит потому что в Haskell статический полиморфизм. Т.е., по сути, как в плюсах перегруженные ф-ии, что я примером на сях и демонстрировал.
1) Все типы известны на этапе компиляции, следовательно разрулить этот пример не должно составлять проблем.
2) Рекомендую подумать над этим примером: ссылка удалена модератором

Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
не проблемы если писАть грамотно
И что неграмотного ты увидел в моем примере? Обычная обобщенная функция, применяющая переданную ей функцию ко всем элементам кортежа. Этакая map над кортежами.

Добавлено через 24 минуты
Цитата Сообщение от korvin_ Посмотреть сообщение
2) Рекомендую подумать над этим примером: ссылка удалена модератором
Haskell
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
import System.IO
 
data Nil = Nil
data Cons a = Cons Int a
 
class ScalarProduct a where
    scalarProduct :: a -> a -> Int
 
instance ScalarProduct Nil where
    scalarProduct Nil Nil = 0
 
instance ScalarProduct a => ScalarProduct (Cons a) where
    scalarProduct (Cons n1 a1) (Cons n2 a2) = n1 * n2 + scalarProduct a1 a2
 
test :: Int -> Int
test n = test' n 0 Nil Nil where
    test' :: ScalarProduct a => Int -> Int -> a -> a -> Int
    test' 0 _ as bs = scalarProduct as bs
    test' n i as bs = test' (n-1) (i+1) (Cons (2*i+1) as) (Cons (i^2) bs)
 
readInt :: IO Int
readInt = readLn
 
main = do
    i <- readInt
    print $ test i
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
01.02.2015, 12:45
Цитата Сообщение от taras atavin Посмотреть сообщение
А ничего, что она приоритетная и прежде чем считать значение оператора, надо определить, каким по счёту он считается, а из-за этого надо бегать по всему выражению много раз?
У меня для тебя плохие новости. Твои представления о том, как работают парсеры не соответствуют действительности. Калькулятор с инфиксными операторами и приоритетами - канонический пример при изучении грамматик и техник синтаксического разбора. Ни при каких техниках не нужно считывать входной поток и "бегать по нему" более чем один раз. Кстати, этот инфиксный калькулятор легко представляется LL-грамматикой и пишется рекурсивным спуском любым школьником руками. Разница в сложности разбора между префиксной и инфиксной записи настолько ничтожна, что об этом просто не хочется говорить. Ну конечно, если ты не можешь написать элементарный парсер и не имеешь представления, как они пишутся, то тебе, наверное, сложно. Ну так это твои проблемы.

Добавлено через 2 минуты
Цитата Сообщение от taras atavin Посмотреть сообщение
Ну да, плевать, что машина на 2+3*2 выдаст 10 вместо восьми.
Твоё калькулятор так посчитал? Прими мои поздравления!
0
Модератор
 Аватар для Curry
5165 / 3527 / 536
Регистрация: 01.06.2013
Сообщений: 7,677
Записей в блоге: 9
01.02.2015, 12:47
Цитата Сообщение от korvin_ Посмотреть сообщение
Все типы известны на этапе компиляции, следовательно разрулить этот пример не должно составлять проблем.
Будем считать что я не умею объяснять. Возможно, так оно и есть.
Цитата Сообщение от korvin_ Посмотреть сообщение
Рекомендую подумать над этим примером:
Вы это из треда "Мифический Haskell" на rsdn взяли? Большой холивар, кажется интересный. Почитаю.
Цитата Сообщение от korvin_ Посмотреть сообщение
И что неграмотного ты увидел в моем примере?
Для этого надо воспроизвести часть переписки:
Сообщение от korvin_ : Стакикопроблемы во всей красе.
Сообщение от KolodeznyDiver : Стакикопроблемы - не проблемы если писАть грамотно.
Я не про пример, а про статическую типизацию вообще. Если грамотно использовать имеющиеся типы и создавать свои, под задачу, то проблем, наоборот меньше - при отладке, т.к. много багов компилятор наловит.
Это ведь только нубы говорят "я пишу без ошибок". А, нам, простым смертным, отлаживать приходится.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
01.02.2015, 13:15
Цитата Сообщение от KolodeznyDiver Посмотреть сообщение
Вы это из треда "Мифический Haskell" на rsdn взяли?
Взял не оттуда, но возможно, там, где я его взял, его взяли оттуда.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
01.02.2015, 14:22
Цитата Сообщение от nullxdth Посмотреть сообщение
Твои представления о том, как работают парсеры не соответствуют действительности.
При том, что я их уже писал.

Добавлено через 1 минуту
Цитата Сообщение от nullxdth Посмотреть сообщение
Ни при каких техниках не нужно считывать входной поток и "бегать по нему" более чем один раз.
Греберт Шилдт смотрит на Вас с большим недоумением.

Добавлено через 1 минуту
Цитата Сообщение от nullxdth Посмотреть сообщение
Разница в сложности разбора между префиксной и инфиксной записи настолько ничтожна, что об этом просто не хочется говорить.
Чего? На фоне инфиксного парсера префиксный ничтожен на столько, что о нём не стоит не только говорить, но даже думать.
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
01.02.2015, 15:00
Цитата Сообщение от taras atavin Посмотреть сообщение
При том, что я их уже писал.
Если ты и писал, то это были какие-то дикие велосипеды, судя по вышесказанному.
Цитата Сообщение от taras atavin Посмотреть сообщение
Греберт Шилдт смотрит на Вас с большим недоумением.
Не надо приводить тут этого мудака. Это никто. Все эти дела стоит постигать по Книге Драконов. Заметь, что сам по себе синтаксический разбор - это самое простое в языках и компиляторах. И заострять внимание на сложности разбора инфиксной записи, как в контекста разработки языка/компилятора, так и в контексте использования не имеет смысла, ведь это крайне просто. Очевидно и шаблонно. Есть в тысячу крат более интересные и сложные вопросы и темы.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
01.02.2015, 15:10
Цитата Сообщение от nullxdth Посмотреть сообщение
Не надо приводить тут этого мудака. Это никто.
Парсер в его книге тем не менее опубликован. Причём, по-Вашему он не возможен. Однако работает. Так может тогда ни кто здесь совсем другой? Минимум возвратов назад при работе с инфиксным выражением соответствует преобразованию его в постфиксное. Но даже оно требует одного возврата к каждому оператору, точнее двух простых циклов по всему выражению. Постфиксное исполняется в один цикл.

Добавлено через 56 секунд
Цитата Сообщение от nullxdth Посмотреть сообщение
И заострять внимание на сложности разбора инфиксной записи, как в контекста разработки языка/компилятора,
Ну если речь о разработке транслятора.... Там просто ничего простого нет.

Добавлено через 1 минуту
Но не разница теряется на фоне самого парсера, а парсер польской нотации на фоне разницы в сложности с инфиксным.
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
01.02.2015, 15:14
Цитата Сообщение от taras atavin Посмотреть сообщение
Парсер в его книге тем не менее опубликован.
Приведи сюда код "мастера". Желательно инфиксного калькулятора.
Цитата Сообщение от taras atavin Посмотреть сообщение
Причём, по-Вашему он не возможен.
Где я такое писал? Увеличить сложность разбора, если дурак, всегда можно.

Добавлено через 48 секунд
Цитата Сообщение от taras atavin Посмотреть сообщение
Но не разница теряется на фоне самого парсера, а парсер польской нотации на фоне разницы в сложности с инфиксным.
Ой, всё. Я больше не могу.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
01.02.2015, 15:28
Цитата Сообщение от nullxdth Посмотреть сообщение
Приведи сюда код "мастера". Желательно инфиксного калькулятора.
Ваще то у него не калькулятор, а интерпретатор бейсика.

Добавлено через 6 минут
Цитата Сообщение от nullxdth Посмотреть сообщение
Где я такое писал? Увеличить сложность разбора, если дурак, всегда можно.
Вот же:
Цитата Сообщение от nullxdth Посмотреть сообщение
Ни при каких техниках не нужно считывать входной поток и "бегать по нему" более чем один раз.
Цитата Сообщение от nullxdth Посмотреть сообщение
Увеличить сложность разбора, если дурак, всегда можно.
Пример парсера инфиксных выражений, который каждый оператор обрабатывает один раз, в студию, или дурак детектед. Только слив можно уже засчитывать, так как такой парсер не возможен.
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
01.02.2015, 15:32
Цитата Сообщение от taras atavin Посмотреть сообщение
Ваще то у него не калькулятор, а интерпретатор бейсика.
Код-то скопипасть сюда, по посмеёмся над ним.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
01.02.2015, 15:33
Вашего кода не будет. Чего и следовало ожидать.
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
01.02.2015, 15:41
Цитата Сообщение от taras atavin Посмотреть сообщение
Пример парсера инфиксных выражений, который каждый оператор обрабатывает один раз, в студию, или дурак детектед.
Вот тебе канонический пример на cl-yacc: http://www.pps.univ-paris-dide... -yacc.html.
Как раз транслятор из инфиксной в префиксную. Что такое yacc, можешь загуглить. Это генератор восходящих парсеров. Если коротко, там используется автомат с магазинной памятью. Решение о том, перенести (shift) текущий символ входного потока или свернуть (reduce) по правилу принимается на основании неких правил и/или таблицы с приоритетами. Входной поток читается один раз, проход осуществляется один раз.

Добавлено через 1 минуту
Цитата Сообщение от taras atavin Посмотреть сообщение
Вашего кода не будет. Чего и следовало ожидать.
Я, в отличие о тебя, немного знаком с темой. Не обольщайся. Давай код или засливан.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
01.02.2015, 15:47
Цитата Сообщение от nullxdth Посмотреть сообщение
Входной поток читается один раз, проход осуществляется один раз.
Так у паскаля же однопроходный компилятор. Наверное и парсер тоже.
0
 Аватар для nullxdth
2305 / 1064 / 77
Регистрация: 12.03.2013
Сообщений: 4,987
01.02.2015, 15:56
Цитата Сообщение от korvin_ Посмотреть сообщение
Наверное и парсер тоже.
Конечно однопроходный.
0
 Аватар для taras atavin
4226 / 1796 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
01.02.2015, 16:25
Цитата Сообщение от nullxdth Посмотреть сообщение
Вот тебе канонический пример на cl-yacc: http://www.pps.univ-paris-dide... -yacc.html.
Как раз транслятор из инфиксной в префиксную.
Прям здесь все знают, какие действия предписывает эта запись. На c/c++/pascal/besic давай.

Добавлено через 7 минут
А, наверное
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for (int i=0, r=0.0; i<cstr(s); ++i)
{
 swicht(s[i])
 {
  case '+': r+=(double)((int)s[i-1]-(int)'0')+(double)((int)s[i+1]-(int)'0');
  break;
  case '-': r+=(double)((int)s[i-1]-(int)'0')-(double)((int)s[i+1]-(int)'0');
  break;
  case '*': r+=(double)((int)s[i-1]-(int)'0')*(double)((int)s[i+1]-(int)'0');
  break;
  case '/': r+=(double)((int)s[i-1]-(int)'0')+(double)((int)s[i+1]-(int)'0');
  break;
 }
}
. Мне придётся тебя разочаровать:
1. Этот "парсер" не правилен.
2. Даже здесь есть возврат назад к левому операнду.

Добавлено через 43 секунды
Цитата Сообщение от nullxdth Посмотреть сообщение
Я, в отличие о тебя, немного знаком с темой.
я, в отличие от тебя, знаком с темой.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.02.2015, 16:25

Какой язык веб-программирования выбрать? Плюсы\минусы
Вопрос что ни на есть из раздела священных, но все же... Какой язык веб-программирования кто предпочитает? У кого какие плюсы и...

Плюсы и минусы
Господа, хочется узнать ваше мнение по такому варианту работы с сервером терминалов. Хочу предложить к рассмотрению: Cервер...

Плюсы и минусы C#
Добрый день! Не хочу ни в коем случае развязывать вечную войну идущей между Delphi и С, но требуется грамотный взвешенный ответ. Вообще...

Плюсы и минусы
В массиве Z(m) найти число чередований знака, то есть число переходов с плюсов на минус или с минуса на плюс. Например, в...

Плюсы и минусы J2se
Ребята, такой вопрос... Какие преимущества есть у j2se перед другими языками? и почему изучают именно его , а не чтото другое? ведь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
160
Ответ Создать тему
Новые блоги и статьи
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru