Интерфейс Python и функциональный язык

Моим текущим основным языком программирования является python. В этом есть много вещей, которые мне нравятся, но мне также нравятся функциональные языки. Недостаточно сделать для них целую программу, но определенно для определенной функциональности, которая хорошо подходит для функциональной формы.

Конечно, .NET поражает в этом отношении, имея как ironpython, так и F #. Но, учитывая поддержку ironpython для научной экосистемы python, все еще изворотливая в прошлый раз, когда я проверил, .NET для меня не очень подходит. Я немного шокирован очевидным отсутствием инструментов для облегчения взаимодействия между cpython и, скажем, Haskell. Они оба зрелые языки с большими сообществами, которые кажутся мне таким приятным матчем.

Есть ли что-то в их архитектуре, что делает их плохо совместимыми, что им не хватает, или это просто что-то удивительное, которое все еще ждет?

Уточнить; там есть несколько полупродуманных проектов, но я думаю о чем-то, что сравнимо с удивительностью Weave, pycuda или boost. Что-то, что автоматизирует всю сантехнику, присущую interop, всего несколькими аннотациями.

    4 Solutions collect form web for “Интерфейс Python и функциональный язык”

    Другой подход – использовать unix-каналы и просто написать программу Haskell, а также написать программу Python и передать их по тексту. Haskell и Python даже используют один и тот же синтаксис для списков, поэтому очень легко передавать данные от одного к другому.

    Ссылаясь на:

    Есть ли что-то в их архитектуре, что делает их плохо совместимыми, что им не хватает, или это просто что-то удивительное, которое все еще ждет?

    Я думаю, что речь идет о людях, которые делают эти языки:

    Не так много людей, которые хотят делать Haskell и Python одновременно.

    1. использовать оба языка (liek Haskell и Python), в то же время вы либо можете пройти через C-интерфейс, либо создать протокол, на котором говорят оба языка.

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

    2. Я использую Python, и хотя я знаю некоторые Haskell, я не программирую его. Я немного застрял в объектной ориентации, рассказывая мне, что когда-нибудь проблема решит для меня, что ее лучше решить в Haskell, чем на python. Эта проблема еще не возникла, потому что моя первая мысль: я знаю, как это сделать в Python. Я думаю, что другие «эксперты» тоже сталкиваются с этой проблемой.

    3. Вы начинаете думать на языке. Я думаю, что у Haskell есть совершенно другой способ мышления с его функциональным стилем, без побочных эффектов. Чтобы понять это мышление, мне нужно забыть или не использовать свои знания на Python. Переключение между этими двумя способами мышления требует некоторой силы.

    Объединяя это: потому что эти два языка не так близки, они остаются в стороне. Трудно сделать и то и другое, и не так много или просто способов практиковать оба.

    Я думаю, что любой ответ на этот вопрос был бы упущен без учета инерции объектно-ориентированных и императивных языков относительно функциональных. Рассмотрим следующую ситуацию, начиная с того факта, что функциональные языки не преподаются почти на частоте, когда объектно-ориентированные или императивные языки находятся на уровне среднего, университетского или выпускного уровней. Как упоминает пользователь, в качестве программиста есть значительный импульс в отношении выбора языка. Например, в ходе типичной степени CS в четырехлетнем университете можно изучать несколько языков и, более чем вероятно, ни один из них не является функциональным языком. Этот типичный выпускник затем приступит к работе в промышленности, где после программирования на 40 часов в неделю для своей работы очень сложно заняться не только изучением совершенно нового языка, но и изучением языка, который работает совершенно иначе, чем тот, который уже знает. Помимо всего этого, существует недостаток, заключающийся в том, что функциональные языки не так полезны в промышленности, как объектно-ориентированные или императивные. Можно видеть, что, учитывая это текущее состояние, понятно, что интероперабельность между Python и Haskell заключается не в том, что некоторым программистам это нравится.

    Если бы вы использовали Haskell для привязок Python, что бы вы сделали на каждом языке?

    Если вы считаете, что связаны C и Python, например, вы используете C, когда вам нужно ускорение скорости, или когда вам нужно нажимать биты, и вы используете Python, когда хотите быть выразительным и кратким. Обычно у вас есть пара языков, одна для большей части логики, и одна, которую вы можете сбросить на скорость, ценой ясности. Чем больше пробелов между языками, тем больше вы можете получить от переключения.

    Если бы нам пришлось связывать Haskell и Python, менее понятно, что вы выберете из него. Я бы не отказался от Python в Haskell только за скорость, так как Haskell, хотя и быстро, не так быстро, как C. Но если я использую Haskell, когда я буду использовать Python? Python не более выразителен, чем Haskell, а не как сравнение C и Python.

    Я думаю, что большую часть времени проще просто import functools и функционально программировать на Python, вместо того чтобы преобразовывать объекты в некоторое представление Haskell, выполнять некоторую работу, а затем преобразовывать ее обратно.

    Хотя, если вы действительно этого хотели, Cython упростит запись функций, которые может использовать FFI Haskell.

    Python - лучший язык программирования в мире.