Kernighan & Ritchie word count program на функциональном языке

В последнее время я немного читаю о функциональном программировании в Интернете и думаю, что у меня есть базовое представление о концепциях, лежащих в его основе.

Мне любопытно, как повседневные задачи программирования, связанные с каким-то состоянием, решаются на чисто функциональном языке программирования.

Например: как программа подсчета слов из книги «Язык программирования Си» может быть реализована на чисто функциональном языке?

Любые вклады приветствуются, если решение выполнено в чисто функциональном стиле.

Вот код C из книги:

#include <stdio.h>

#define IN  1 /* inside a word */
#define OUT 0 /* outside a word */

/* count lines, words, and characters in input */
main()
{
  int c, nl, nw, nc, state;

  state = OUT;
  nl = nw = nc = 0;
  while ((c = getchar()) != EOF) {
    ++nc;
    if (c == '\n')
      ++nl;
    if (c == ' ' || c == '\n' || c = '\t')
      state = OUT;
    else if (state == OUT) {
      state = IN;
      ++nw;
    }
  }

  printf("%d %d %d\n", nl, nw, nc);
}
9
задан 8 April 2012 в 01:08
поделиться