質問: 「Prologでは再帰的に処理する方法と、findallでリストを生成する方法があると聞きました。findallの使い方を教えてください」の質問は、質問者が回答を知っていてクイズ的な意図で出している気がします(コード内のコメントから推測)。 CodeIQ的な使い方なのかも知れませんが、このような質問はスタックオーバーフローでは適切と考えますか。それとも不適切と考えますか。 個人的にはクイズであることを明示していればありかなとは思います。
回答: どうでしょうね、ツイッターでフォローされましたがどうやらベテランの方のようなので、 知っていても不思議はなさそうですが、あのfindallの使い方は王道でもなさそうなので 普通に質問だったんじゃないかと思います。 prologって事実を定義してprologに推測させるような動きみたいなので、 書き方って相当あると思うんですよね。 再帰の例として貼り付けたのは手ごろな問題集かなにかから貼り付けただけなんじゃないでしょうか。 本題として、仮にタイトルが質問風で実はクイズでしたー。というのであればちょっと気分悪いですね。 文章なおせ~MD調べろーって要求していた手前、回答できないかprolog調べたりしたので時間返してと思ってしまうかも。 今回はprolog触ってみるきっかけを得られたってことで良しとしますが。 かりにタイトルがクイズ風であっても、ブログを読みに来ているわけではないのでクイズなら他所でどうぞと思います。 その人の考えとあっていたからなんなんでしょうか?レピュテーションもクイズ王の目安?って思っちゃいますし。 追記 古いログ漁ってみたら、ツイッターで書いてましたね。findallで乱数リスト。 ``` ?- length(L,100),findall(R,(member(_,L),R is random(100)),_乱数リスト). ?- findall(R,(between(1,100,_),R is random(100)),_乱数リスト). ``` だそうです。 うーん、そうか。そんなのなら他の質問に時間を当てたかった。 追記2 私の回答者経験(ここ以外)から言えば、「こういうのはどうですか」と回答を提示して 「それは知っていますが違うやり方を探しています」と言われたとき、最初からその情報も共有してほしいと 思います。 (その点については指摘しますが、改善されないとその人に回答するのをやめようと思うことも。) クイズ形式とわかりにくい、クイズの場合は似たような感覚に陥りますね。 なので、「自己回答する」とか、「自分は答えを知っている」とかは明示してほしいです。 そういう場合には「どういう意図でその質問を投稿した」かもあるとわかりやすいですね。 (某所の様に自作自演が頻出したらいやですけどね(そこは公式にやっちゃってましたが)。利用者がやる分にはコミュニティの責任ですから問題に感じたらそこから改善すればいいんですかね。) 編集によって対応するにしても、真意がわからなければ対応しにくいようにも思います。 想像で編集すれば間違った方向に編集してしまうケースもありますし、 声に出せない質問者であれば、質問者は「意図が変わったけどこのサイトはそういうものなんだ」と思い、編集者は「やはりあっていた」と思う。 まずはなるべく真意を共有する方向にもっていけるといいですね。