Деревья выражений действительно ли LINQ полны по Тьюрингу?

Почему бы вам не попробовать использовать response.sendRedirect:

        @Override
        public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response,
                AuthenticationException exception) throws IOException, ServletException {
            final HttpSession session = request.getSession(false);
            if (session != null) {
                request.getSession().setAttribute(WebAttributes.AUTHENTICATION_EXCEPTION, exception);
            }
          //here the logic to get the error type of the exception
          String errorMessage = ????

            redirectStrategy.sendRedirect(request, response,
                    "http://localhost:8080/login?" + errorMessage);
        }
10
задан TraumaPony 30 October 2008 в 14:37
поделиться

4 ответа

В раннем проекте спецификации C# 3.0 был комментарий в поле раздела по деревьям выражений, которые сказали:

У меня есть действительно изумительное доказательство полноты по Тьюрингу, которую это поле является слишком узким для содержания.

Печально никто не смог узнать, кто записал это, или разработайте доказательство.

21
ответ дан 3 December 2019 в 15:36
поделиться

Деревья выражений LINQ могут представить что-либо, что можно вставить нормальное выражение C#. По сути, они не могут использоваться для прямого представления while циклы, for циклы, и т.д.

Однако теоретически возможно использовать лямбда-выражения и рекурсию для выполнения любого повторения, в котором Вы, возможно, нуждаетесь. На практике может быть легче отбросить Enumerable методы в Ваше дерево.

2
ответ дан 3 December 2019 в 15:36
поделиться

Не определяя вещь, которая выполнит дерево, мы не знаем. В собственной интерпретации CLR (когда Вы компилируете их в делегатов) они. Но если Вы переводите их в SQL, они не, и можно изобрести собственную запутывающую интерпретацию их с любыми свойствами, которые Вы любите.

Пока Вы не решили, как интерпретировать их, они - просто структуры данных.

4
ответ дан 3 December 2019 в 15:36
поделиться

Ну, почему Вы не пытаетесь доказать его? Я держал пари, что это - забавная проблема ;)

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

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

Однако невведенное лямбда-исчисление является полным по Тьюрингу Turing_completeness#Examples, но Лямбда-исчисление не разрешает рекурсии по сути Lambda_calculus#Recursion, это все очень рискованно.

Я пришел бы к заключению, что выражение, вероятно, полно по Тьюрингу, но оно потребует кого-то, кто более знаком с этим для подтверждения этого.

1
ответ дан 3 December 2019 в 15:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: