関数型言語単語


ニコニコ動画で関数型言語の動画を見に行く
カンスウガタゲンゴ
  • 3
  • 0pt
掲示板へ

関数型言語とはプログラミング言語の一カテゴリ。書き込みできるメモリを持たず、全ては関数で作られるという世界観を持つ。 

広い意味では、関数世界観を基調としつつ、時々ズルしてメモリを使う言語も含む。

 概要

チューリングマシン系の言語(手続き型言語)では、プログラム関数メモリ間だが、関数型言語は本当に関数しか使わない。でもちゃんとチューリング完全

CとかJavaとかしか知らない人間から見ると摩訶不思議だが、単にメモリメモリに見えないというだけで、持続的な記憶自体は「実行文脈」という形で存続している。

ピュア関数としてはHaskellが有名。Lisp、MLなんかはズルするクチ。

一覧

関数型言語というのは、「数学的」関数を扱う言語であり、数学関数とは副作用を認めず、必然的に参照透過となる。しかし、それでは実行結果の表示すらすることができないので、何らかの妥協が必要になる。この妥協の仕方で純関数型言語と非純関数型言語に分かれる。ただ、「純」や「関数」の定義が人により異なる場合があるので、下記の分類は絶対的なものではない。

純粋関数型言語

関数型言語は、副作用が混じらず純である。副作用モナドなどの機構を用いて純部分から分離されている。

非純粋関数型言語

一方、非純関数型言語では、多少の制約を受けるものの厳密な分離を行わなくても副作用を扱うことができるようになっている。

Lispは関数型言語の元祖だが、後続の言語にべると厳密さを欠いているため、関数型言語の分類から相対的に外されることもある。

関数型プログラミング可能な言語

後付けで関数型プログラミングが可になった言語や、関数型プログラミングが最重要視されない言語まで関数型言語と呼ぶべきかどうかは人によって意見が異なるところではある。

関連項目

関連リンク

【スポンサーリンク】

  • 3
  • 0pt
記事編集 編集履歴を閲覧

ニコニ広告で宣伝された記事

うまごん (生) 記事と一緒に動画もおすすめ!
提供: ゲスト
もっと見る

この記事の掲示板に最近描かれたお絵カキコ

お絵カキコがありません

この記事の掲示板に最近投稿されたピコカキコ

ピコカキコがありません

関数型言語

8 ななしのよっしん
2016/11/23(水) 16:02:51 ID: z+D/8iqfU/
C++, C#, Javaは途中のバージョンから関数の要素のうち手続きでも便利なものを取り入れているが, 全体としては手続きであって, 関数はあくまで脇役って感じ

JavaScriptも似たような扱いなんだが, 強いて言えばそれらの要素が昔からあって, それが後で活用されるようになった, という感じで線引かなかったのかな...でも扱いとしては線引かれてる言語とあまり変わらないと思う.

LISPはそのリストの中ではかなり異質かと, 本来なら非純関数型言語に入れていいような気もするが方言生ごとに事情が違って, 較的関数の気が強いSchemeが別として非純に入れてあるからそうでないLISPを非関数として分類したのかもね
👍
高評価
0
👎
低評価
0
9 ななしのよっしん
2016/11/23(水) 16:12:54 ID: 7wRLAXThaX
Lisp関数型言語の代表例で問題ないっしょ
ピュアとかいって原理義が前に出過ぎるのはよくない

Swift ってアップルじゃない方かな? 紛らわしいから消すべき
👍
高評価
0
👎
低評価
0
10 ななしのよっしん
2017/02/19(日) 05:15:27 ID: 0qArFZC13Q
組み込みで数値があるような言語は純関数とは言えないでしょ。チャーチ数で数値実装するとかして、すべてのオブジェクト関数で表現して初めて純関数型言語と言える。有名なのだとLazy Kくらいかな
👍
高評価
0
👎
低評価
0
11 ななしのよっしん
2017/03/24(金) 06:38:55 ID: qpvL55M3RE
Common Lispについては関数もできるよってくらいな気がしますします
あ、Lispとしか書いてなかった
👍
高評価
0
👎
低評価
0
12 ななしのよっしん
2017/07/23(日) 15:39:44 ID: uyaDnTSG6N
Swift(Apple)は関数ってわけじゃない。定数を let で記述することや、パターンマッチングなんかを見るとモロ受けてるのは分けるけどね。

C++はconstexpr縛りがついている時副作用レスであるという保になるので、部分的に関数といえる。
👍
高評価
0
👎
低評価
0
13 ななしのよっしん
2018/08/06(月) 14:10:31 ID: pp3CDYT8Qn
だいぶ古いレスだけど
>>10 ここでいう純というのは
関数が純かどうかという意味だから
数値の有は関係ない

メソッドを持たないプリミティブの値が存在しない
OO言語のことを純オブジェクト指向言語と呼ぶことは
知っているが、それとは純関数型言語の「純」は全く関係ない
👍
高評価
0
👎
低評価
0
14 ななしのよっしん
2019/05/31(金) 18:12:12 ID: UTAF02gFVS
稀代の詩人が生み出した純関数型言語Spinozaが抜けてるぞ
👍
高評価
0
👎
低評価
0
15 ななしのよっしん
2019/11/16(土) 23:53:01 ID: t9xfB7Q773
UnlambdaLazy Kはどこ・・・?
👍
高評価
0
👎
低評価
0
16 ななしのよっしん
2022/01/22(土) 20:51:28 ID: YQuUeEwl5u
>>6 >>7 >>8
関数も利用出来る」とは別で「手続きであるが利便性の為に関数ライクな文法を一部取り入れている」を作れば万事解決ではないかと
👍
高評価
0
👎
低評価
0
17 ななしのよっしん
2022/01/22(土) 20:59:21 ID: YQuUeEwl5u
関数型言語と言っておきながら、その実は純数学的言語というのが正しそうだ
👍
高評価
0
👎
低評価
0

ニコニコニューストピックス