Как написать псевдокод для языков программирования, таких как Scheme или Haskell? Все, что я искал, показал псевдокод стиля C или Python.Как написать псевдокод для языков функционального программирования?
ответ
Если я пишу алгоритм в псевдокоде в функциональном стиле, то я мог бы смешивать и сочетать языки, но буду последовательно использовать:
- позволяет переплету переменных
- функции приложения
- карты и складки
Возьмем, например, хэш-функция:
hash data =
let blocks = chunksOf blockSize (preprocess data)
foldr updateContext initialContext blocks
В SICP и, возможно, в других учебниках у вас есть что-то оптимистичное программирование. Вместо псевдокода вы просто называете вещи и предоставляете аргументы, которые они могут принять. Так представьте, что вы хотите сделать дерево Хаффмана из списка отсортированных узлов от самой низкой до самой высокой частоты:
(define (huffman nodes)
(if (single-node? nodes)
(first nodes)
(let ([new-node
(make-node (first nodes)
(second nodes))])
(huffman (insert-sorted new-node
(cddr nodes))))))
Это полный алгоритм и он даже станет частью полученного фактического кода, так это тоже не псевдо-код. single-node?
, make-node
, insert-sorted
не определен, и в Схеме вы получите сообщение об ошибке, но в CL вы могли бы использовать это, и он перепрыгнул бы в отладчик, где вас спросили, хотите ли вы определить некоторые из них, чтобы вы в основном затем выполняйте недостающие части по мере продвижения и продолжайте выполнение, пока все не будет завершено.
Я думаю, что в Haskell или любом другом языке программирования, а не только в функциональных, вы можете сделать такое оптимистическое программирование - на языке, который вы реализуете, конечно. В конечном результате могут быть небольшие изменения, но это не больше, чем в других рефакторингах.
- 1. Интроспекция языков функционального программирования
- 2. Новое для функционального программирования
- 3. Как написать псевдокод для следующей диаграммы?
- 4. псевдокод для динамического программирования для коммерческого коммивояжера
- 5. Как написать псевдокод
- 6. Как написать этот псевдокод
- 7. профайлеры для языков программирования
- 8. Значок Шрифты для языков программирования
- 9. Примеры кода для языков программирования
- 10. Собственный комментарий для функционального программирования
- 11. лямбда-исчисление для функционального программирования
- 12. Самонастройка функционального программирования Python
- 13. Модель машины для функционального программирования
- 14. функционального программирования в PHP
- 15. Архитектура функционального программирования
- 16. Упражнение функционального программирования
- 17. Решение функционального программирования
- 18. Будущее функционального программирования
- 19. Понимание функционального программирования
- 20. Scala функционального программирования оператор :::
- 21. Определение точки функционального программирования
- 22. Каковы преимущества функционального программирования?
- 23. Как написать псевдокод в Mapreduce?
- 24. функционального программирования в быстрой
- 25. Python функционального программирования
- 26. Принципы функционального программирования
- 27. Ловушки/Недостатки функционального программирования
- 28. Функция функционального программирования путаница
- 29. Пример функционального программирования
- 30. Проблема функционального программирования - JS
Я думаю, что это сильно зависит от того, на каком функциональном языке вы хотите писать псевдокод. Haskell, ocaml и fsharp имеют совершенно иной подход, чем erlang, clojure/lisp. Таким образом, псевдокод будет выглядеть по-другому. Для haskell я бы написал в основном сигнатуры типов и объяснил алгоритм под прозой. Для динамических языков у меня недостаточно опыта, чтобы дать вам какие-либо подсказки. – epsilonhalbe
Зачем вы хотите это написать? Кто-то говорит «покажите мне псевдокод», или вы пытаетесь понять, как разработать код в функциональном стиле? Если последний, то псевдокод, вероятно, является неправильным способом. Немного больше фона для вашего вопроса было бы полезно. –
Часто (хотя и не всегда) функциональный код очень компактный и высокоуровневый, поэтому в небольшом пространстве вы можете вместить весь алгоритм, делая ненужным псевдокод. IMO, псевдокод более полезен, когда у вас слишком многословный синтаксис (который вредит пониманию) или когда вы хотите пропустить некоторые скучные части (здесь будут работать штрафы). – chi