LINUX.ORG.RU

[haskell] простейшее веб приложение

 


0

2

Добрый вечер.

Хочется сделать простейшее веб-приложение на отдельном поддомене.

Приложение должно состоять из формы - входные данные (несколько цифр), кнопка, выходные данные. Нажали кнопку - получили результат выполнения хаскелевого бинаря

./shit ${ВХОДНЫЕ ДАННЫЕ}
, динамически (без перезагрузки всей страницы) отобразили их в выходных данных.

Собственно, начал с простого nginx'а, но fcgiwrap настроить не удалось. Поэтому пока в форме выходных данных получаю содержимое бинарника.

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

Перемещено hibou из Development

Ответ на: комментарий от garmonbozia

ну а типа запустить обычный сервер на порту и проксировать на него запрос с nginx?

trashymichael ★★★
()
Ответ на: комментарий от alienclaster

Не подскажешь, зачем тебе haskell в вебе?

Этот вопрос звучит крайне странно, особенно в свете http://www.haskell.org/haskellwiki/Web/Frameworks . Попробуй спросить об этом где-нибудь в Haskell-Cafe, интересно, что тебе ответят.

anonymous
()

Не понимаю, в чём проблема?

Делаешь пандорический захват, лифтишь в монаду, потом строишь рекурсивную схему (здесь подойдёт зигохистоморфный препроморфизм) как монадический трансформер из категории эндофункторов, и метациклически вычисляешь результат. Любой второкурсник справится. А если делать на анафорических лямбдах — так задачка вообще на пять минут.

anonymous
()
Ответ на: комментарий от anonymous

Делаешь пандорический захват, лифтишь в монаду, потом строишь рекурсивную схему (здесь подойдёт зигохистоморфный препроморфизм) как монадический трансформер из категории эндофункторов, и метациклически вычисляешь результат. Любой второкурсник справится. А если делать на анафорических лямбдах — так задачка вообще на пять минут.

Уверен, что препроморфизм подойдёт? Это, всё же, надо сначала математически доказать.

anonymous
()
Ответ на: комментарий от alienclaster

oleg already did it

если так уж нужно «привычное» ООП, то [1], [2]. Хорошим вопросом, кстати, будет как часто нужно «привычное» ООП и ORM в вебе, и как часто можно обойтись без них.

[1] — http://hackage.haskell.org/package/HList

[2] — http://homepages.cwi.nl/~ralf/HList/paper.pdf

qnikst ★★★★★
()

Это тянет на тему для докторского диссера.

anonymous
()
Ответ на: комментарий от alienclaster

В чистом си ООП есть.

Муахаха

Вопрос тупняк. Нормально обьекты работаеют в ФП парадигме

О да, объекты без состояний - звучит гордо

откуда вы такие на ЛОРе беретесь?

Waterlaz ★★★★★
()
Ответ на: комментарий от vertexua

Мутатор не слышал?

Ты расскажешь, как могут существовать объекты с состяниями в чистом фп или дальше будешь закидывать баззвордами из хаски-мира?

alienclaster ★★★
()
Ответ на: oleg already did it от qnikst

Что ты имеешь ввиду под «привычным» ооп? И приведи примеры таковыми не являющегося пожалуйста.

alienclaster ★★★
()
Ответ на: комментарий от alienclaster

Haskell ни при чем. Любая википедия тебе скажет что джавский захудалый сеттер - мутатор. Другое дело что мутатор может быть в immutable объекте. Думай как и к тебе придет озарение

vertexua ★★★★★
()
Ответ на: комментарий от alienclaster

..сегодня же пятница, можно и покормить..

data MyObject a = MyObject { innerState :: a }

на тебе структуру с состоянием в чистом фп :) давай формулируй дальше

qnikst ★★★★★
()
Ответ на: комментарий от yoghurt

тогда следует уточнить этот термин в контексте «объекта»

qnikst ★★★★★
()
Ответ на: комментарий от vertexua

Haskell ни при чем. Любая википедия тебе скажет что джавский захудалый сеттер - мутатор

Какой звездец, ты привел мне в пример баззворд из своего жабомирка для сеттера :) блиать, я буду плакать целый день от смеха

Другое дело что мутатор может быть в immutable объекте

Мутатор в немутируемом объекте!!111 Ты это на полном серьезе сейчас задвигаешь?

Думай как и к тебе придет озарение

Что думать? Как изменять состояние конкретного немутабельного объекта с помощью сеттера? (упал под стул)

alienclaster ★★★
()
Ответ на: комментарий от vertexua

Если ты пытаешься подвести его к функциональным структурам данных через пример сеттера на иммутабельном объекте, который, естественно, не меняет состояния исходного объекта, но из него копированием создает новый, отличающийся тем, что set-нули, то это имхо плохой пример :)

yoghurt ★★★★★
()
Ответ на: комментарий от vertexua

Эта фигня лишь представляет значения, разве нет? :)

yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

Ну а что же, мы же хаскелль обсуждаем. Потому все так и должно быть, не нужно, не эффективно, сложно, не интуитивно и академически корректно.

vertexua ★★★★★
()
Ответ на: комментарий от qnikst

data MyObject a = MyObject { innerState :: a }

На сколько я понимаю, это не совсем то. Приведи аналогичный пример для типичного императивного класса Автомобиль со свойством цвет, который можно было бы поменять в процессе эксплуатации конкретного экземпляра, не создавая при этом новый.

alienclaster ★★★
()
Ответ на: комментарий от yoghurt

правильно ли я понимаю, что ты утверждаешь, что состояние может быть только у изменяемых объектов? и версии одной и той же структуры отказываешься считать одной и той же стуктурой

p.s. до слов «копирование» тоже можно докопаться, но видимо не стоит.

qnikst ★★★★★
()
Ответ на: комментарий от vertexua

Похоже думать ты не умеешь. Ну что же...

Засчитываем тебе слив за грибной подход к терминологии

alienclaster ★★★
()
Ответ на: комментарий от qnikst

правильно ли я понимаю, что ты утверждаешь, что состояние может быть только у изменяемых объектов?

Ты не понял, мне нужно состояние именно у изменяемых объектов. В ином контексте само понятие «состояние» теряет суть, ибо состояние объекта - и есть объект.

alienclaster ★★★
()
Ответ на: комментарий от alienclaster

который можно было бы поменять в процессе эксплуатации конкретного экземпляра, не создавая при этом новый

И при этом чтобы еще все проблемы в жизни решались? да?

vertexua ★★★★★
()
Ответ на: комментарий от alienclaster

не создавая при этом новый.

идёт в разрез с иммутабельностью, и имхо не является причиной, считать содержание структуры отсутсвием состояния.

теперь:

1). можно использовать IORef/STM TVar, которые позволяют получить вышеописанный эффект. Т.е. будет ссылка на объект, который будет изменяться, во втором случае даже транзакционно.

2). можно использовать ST/IO для создания структуры полностью соответствующей запросу.

3). как дела обстоят с HList сказать точно не смогу ибо подробно не трогал.

Если нужны примеры кода, то может не поленюсь к вечеру написать, хотя там по 3-4 строки, но всё же

qnikst ★★★★★
()
Ответ на: комментарий от alienclaster

тогда я попрошу написать зачем это нужно и какие (сложно-решаемые) проблемы возникают из-за иммутабельности в web (про него же топик?) программировании?

qnikst ★★★★★
()
Ответ на: комментарий от vertexua

который можно было бы поменять в процессе эксплуатации конкретного экземпляра, не создавая при этом новый

И при этом чтобы еще все проблемы в жизни решались? да?

Хватит уже этого словесного испражнения^w^w философствования. Облегчим задачу со скидкой на жабодеформацию мозга - дай нормальный способ для копирования объекта при сохранении его имени, желательно в языке с пуре-фп (haskell подойдет) так, чтобы внутри выражения (копирующего старый объект в новый с таким же именем) можно было применять операции к вновь созданному объекту. И допзадание на троечку - объясни, чем это будет отличаться (для пользователя) от _изменения_ объекта.

alienclaster ★★★
()
Ответ на: комментарий от qnikst

не создавая при этом новый.

идёт в разрез с иммутабельностью

... а мутабельность в разрез с пуре-фп. О том и речь

и имхо не является причиной, считать содержание структуры отсутсвием состояния.

Я не считаю «содержание структуры - отсутствием состояния», а утверждаю, что - структура (какой-нибудь объект, и не обязательно с заданными поведенческими свойствами - а тупо набор внесемантических характеристик) с состоянием, которое невозможно изменить - неотличима от собственного состояния, а следовательно один из этих терминов для ее квалификации избыточен (hint: состояние =)

alienclaster ★★★
()
Ответ на: комментарий от RedPossum

мне нужно состояние именно у изменяемых объектов.

Зачем оно тебе нужно?

КО с завистью слушает произносимый мной овет... ВНЕЗАПНО - чтобы изменять. А изменять нужно - чтобы сохранять «имя» объекта. Чтобы работать с «нечто» по ссылке Имя. Или как ты предлагаешь мне работать с данными не зная их адреса или названия в картотеке (что тоже является адресом)?

alienclaster ★★★
()
Ответ на: комментарий от qnikst

тогда я попрошу написать зачем это нужно и какие (сложно-решаемые) проблемы возникают из-за иммутабельности в web (про него же топик?) программировании?

Очевидно же: запись в базу данных - операция меняющее состояние объекта. Зачем мне и в без того текущих абстракциях (трещины от использования orm на этапе прототипа можно затыкать тряпками для мытья пола) пробивать дыру размером с полкормы?

alienclaster ★★★
()
Ответ на: комментарий от alienclaster

откуда вы такие на ЛОРе беретесь?

Откуда берутся такие как ты - я знаю: ползете на свет

ммм... ок. Зачем ты приперся на ЛОР высказывать свои малограмотные соображения?

Waterlaz ★★★★★
()
Ответ на: комментарий от alienclaster

Просто тебе отвечаешь как взять объект, поменять значение и пользоваться измененным объектом, а ты «не, не, как так сделать так как в С++ (или любимом поцкальчике)»

vertexua ★★★★★
()
Ответ на: комментарий от qnikst

1). можно использовать IORef/STM TVar, которые позволяют получить вышеописанный эффект. Т.е. будет ссылка на объект, который будет изменяться, во втором случае даже транзакционно.

И чем это будет отличаться от всех этих «грязных» именованных ссылок на объекты (в стиле common lisp, python, ruby...)?

2). можно использовать ST/IO для создания структуры полностью соответствующей запросу.

Не помешали бы примерчик и камент по поводу «чистоты»

3). как дела обстоят с HList сказать точно не смогу ибо подробно не трогал.

Если нужны примеры кода, то может не поленюсь к вечеру написать, хотя там по 3-4 строки, но всё же

Было бы интересно посмотреть...

alienclaster ★★★
()
Ответ на: комментарий от alienclaster

А изменять нужно - чтобы сохранять «имя» объекта. Чтобы работать с «нечто» по ссылке Имя.

Строго говоря, не нужно.

Waterlaz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.