1. Куча / Говнокод #13423

    +125

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    wrs(S):-put_char('\"'), wrsi(S).
    wrsi([C|S]):-put_char(C), wrsi(S).
    wrsi([]):-put_char('\"').
     
    wrl(S):-put_char('['), wrli(S), put_char(']').
    wrli([C|[O|S]]):-wrs(C), put_char(','), wrli([O|S]).
    wrli([C]):-wrs(C).
     
    :- wrl(["dog", "cat", "canary"]).

    Курю правильные примеры кода на прологе. PrologGovno ждите во всех кинотеатрах страны.
    http://ideone.com/L4vIKs
    Почему вместо того чтобы пользоваться стандартной функцией вывода списков или строк - автор рекомендует это? Я код правда поправил, а то хаскельных скобок (я уже без них не могу) не было и запятую в конце списка выдавало.

    Запостил: HaskellGovno, 15 Июля 2013

    Комментарии (14) RSS

    • >примеры кода на прологе
      >Запостил: HaskellGovno
      Тут явно что-то не то.
      Ответить
    • >Почему вместо того чтобы пользоваться стандартной функцией вывода списков или строк - автор рекомендует это?
      А я еще не могу понять почему вместо стандартной функции вычисления факторила авторы всех туториалов рекомендуют использовать рекурсивный велосипед.
      Ответить
      • > почему вместо стандартной функции вычисления факторила авторы всех туториалов рекомендуют использовать рекурсивный велосипед
        Потому что обычно функции вычисления факториала нет в стандартной библиотеке языка. А ввод\вывод - базовые функции.
        Ответить
        • А я всегда думал, потому что это хороший учебный пример. Или вот функция вычисления длины списка во всяких лиспах и хаскелях - зачем ее в туториалах пишут, неужели стандартной нет?
          Ответить
          • Я прочитал много манулов по хаскелю и там не рекомендовали использовать самописный Length. Так и писали: "Может быть реализован вот так и именно так и есть в стандартной библиотеке. Нет смысла её реализовывать ещё раз".
            Ответить
            • Правда ... я сейчас начинаю сомневаться, а есть ли стандартная такая же функция в прологе ввода-вывода типа print их хаскеля, например для списков?
              Ответить
            • Ну первый попавшийся, YAHT открыл, там my_length где-то в начале определяют.
              Ответить
        • product
          Ответить
          • Одного продукта не достаточно. Только после написания своего факториала:
            factorial n = product [2..n]
            появляется функция факториал для целых чисел
            Ответить
    • Ахахах. Автор статьи мудак.
      http://ideone.com/J9H409
      http://ideone.com/0kdghz

      Он перепутал:
      :- write(["dog", "cat", "canary"]).
      % и
      :- write(['dog', 'cat', 'canary']).
      и потому сказал, что стандартные функции пролога не всегда работают.
      Ответить
      • А чем там отличаются " от '?
        Ответить
        • В одинарных - это, если память не изменяет, символы. типа заинтернированые строки.
          Ответить
    • minus(x,y,x-y).
      :-minus(2,1,1).

      Парни, почему не подтверждает истинность утверждения minus(2,1,1)? Говорит, что оно ложно.
      http://ideone.com/tNU4Lm

      Ещё не понимаю, почему в прологах ?-Утверждение(const, X, Y) не работает? Оно если правильно написано должно вывести весь список всех возможных комбинаций Xов и Yов. Только :-Утверждение(const, X, Y)
      Ответить

    Добавить комментарий