Аватар для 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
5168 / 3530 / 536
Регистрация: 01.06.2013
Сообщений: 7,683
Записей в блоге: 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
5168 / 3530 / 536
Регистрация: 01.06.2013
Сообщений: 7,683
Записей в блоге: 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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru