関数型言語(scheme)とオブジェクト指向言語(c#)の基礎を同時に勉強し、現在オブジェクト指向と関数指向どちらをより重点的に学んでいくかを考えています。
オブジェクト指向について、大まかにいえば
・オブジェクト指向は「変更に強いプログラム」を作るための考え方の一つ。
・それはプログラムを「責任」という観点でいくつかの「オブジェクト」に分割し、「オブジェクト」同士の相互作用とみること。
・オブジェクト指向型言語はそれを支援する仕組みを持っている言語。

という考えに落ち着いています。

関数指向については、参照透過性・高階関数について学び、遅延評価を知り、モナドというものがある、ぐらいの断片的な知識に留まっています。

前置きが長くなってすみません。ここで本題に入ります。

  • 「変更に強いプログラムを作る」という考えを関数指向は含んでいるのか?
  • 例え含んでいなくとも、関数型言語にそれをサポートする仕組みがある(これからでる)のか?

ということを知りたいです。