На многих языках существуют способы создать нечто вроде прозрачного прокси (или транспрокси) для выполнения RPC или даже вызова функций SQL. В C#, например, мы можем использовать метапрограммирование (используя IOC) или DLR для этого. Есть ли способ в Haskell создать прозрачный прокси? Предположим, у нас есть некоторые службы и после создания переменной прокси, мы должны быть в состоянии назвать «MyFunc», как показано ниже:Прозрачный прокси-сервер в Haskell
proxy myFunc arg1 arg2
или любой другой аналогичный. Должен ли я использовать Template Haskell для этого?
Если вы говорите, например, ['DynamicProxy'] (http://www.castleproject.org/projects/dynamicproxy/), то нет, у Haskell нет ничего такого же уродливого, как этот ужасный хак. Идеи, которые вы изучили на языке X, часто не применимы к языку Y, потому что язык Y имеет другой способ делать вещи. Итак, чего вы действительно пытаетесь достичь? –
Я, конечно, знаю о различии в парадигме между языками, так как я серьезно работал с полдюжины языков. Я делаю то же самое с Python, используя __getattr__ и __call__ магические методы и в C#, используя объект IoC Proxy. Я знаю, что в Haskell нет подобного способа, но я имею в виду, есть ли альтернатива для реализации прозрачности клиента в Haskell? (За исключением полного генерации кода) – Kamyar
Некоторое начальное обходное решение может определять тип класса для службы, а затем оператор для перевертывания первого аргумента функции, чтобы получившаяся обратная связь выглядела более красивой: 'x.> F = fx класс MyService где myFunc :: MyService -> a -> b -> Int result <- myServiceInstance.> myFunc arg1 arg2' – Kamyar