スレ立てるまでもない質問はここで 151匹目

レス数が1000を超えています。これ以上書き込みはできません。
2018/11/03(土) 19:08:18.89ID:nx8/6O0X
質問する前にGoogleで検索しましょう。 http://www.google.com/
プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。
ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。
Javascript は Web 制作板、CGI は Web プログラミング板へ。
業界談義、愚痴はプログラマ板へどうぞ。
ゲーム関係の話題はゲーム製作板へどうぞ。
ネタ、板とは関係の無い話題はご遠慮ください。

前スレ
スレ立てるまでもない質問はここで 150匹目
https://mevius.5ch.net/test/read.cgi/tech/1537176309/

注意「〜と〜はどっちの方が○いですか?」みたいなのは
このスレの粘着荒らしですので無視してください
2019/05/03(金) 15:06:25.51ID:ZByh2Qvf
>>969
参考書で勉強するような概念じゃない
971デフォルトの名無しさん
垢版 |
2019/05/03(金) 21:00:57.78ID:zOIXy+Gc
>>969
https://jp.vuejs.org/v2/guide/
2019/05/03(金) 22:00:50.02ID:4DzoaGjH
関数型プログラミングでは副作用はどう表現するのですか?
ファイルのIOやprintfは必要だと思うのですが。。。
973デフォルトの名無しさん
垢版 |
2019/05/04(土) 09:12:23.39ID:S+NYX3By
>>972
関数型言語のスレの方が良い気がするけど。。。
感覚的で良ければ。

圏論では変数も引数のない関数と見なすので、例えばgetLineみたいな副作用のある関数も一種の変数(外部からの入力が入っている変数)と見なします。

n = 1 ― 変数であり、引数なしの関数

入力

getLine ― 副作用関数であり、入力が入っている変数

ただ、入力を通常の値と同じにすると参照透明性が破れるので、IO Stringの様に別の型にして、>>=からしか値が取り出せない様にします。
(逆に通常の型にIOを付けたい場合はreturnを使います)
そうする事で、副作用のある関数は普通の関数も使えるけど、逆は無い事が保証されます。

ぶっちゃけ、純粋関数型言語にも副作用はあると言えますが
(無いと主張するなら虚数の掛け算みたいな感覚。実数に対して90度の回転みたいに、虚空からの値の変数への束縛。
ただしその変数は常に部分適用で見た目が隠されている。みたいな)、
参照透明性が破られることは無い。と言うのが純粋関数型言語の特徴ですね。
974デフォルトの名無しさん
垢版 |
2019/05/04(土) 09:14:58.80ID:S+NYX3By
こう言う書き方はできない
(この場合、putStrLnはString->IO (), getLineはIO String)

main = putStrLn getLine ― 型が違うのでエラー。

これならおk

main = getLine >>= putStrLn ― 入力(ランダムも)したものの加工や出力は必ず>>=の後になる。
(getLine >>= \str -> putStrLn str を部分適用した)

or

main = do str <- getLine
putStrLn str

出力に対しても、出力関数が左端になる事を保証します。
(普通の関数との合成なども出来るが、普通の関数が左端に来る関数に出力関数が引数になったり、合成されることは無い)

main = map print [1..3] ― 型エラー。

main = mapM_ print [1..3] ― IOモナド用のmapMやmapM_(値を捨てる)ならおk

main = print.length [1..10] ― 出力関数が左端に来るなら、普通の関数と関数合成可能。

main = mapM (\_ -> getLine) [1..3] >>= mapM_ (print.length) ― 結局、型が合えば動くと言う点では普通の関数と同じ。
975デフォルトの名無しさん
垢版 |
2019/05/04(土) 09:16:00.91ID:S+NYX3By
制限に引っかかった。。。
main = do str <- getLine
putStrLn str

出力に対しても、出力関数が左端になる事を保証します。
(普通の関数との合成なども出来るが、普通の関数が左端に来る関数に出力関数が引数になったり、合成されることは無い)

main = map print [1..3] ― 型エラー。

main = mapM_ print [1..3] ― IOモナド用のmapMやmapM_(値を捨てる)ならおk

main = print.length [1..10] ― 出力関数が左端に来るなら、普通の関数と関数合成可能。

main = mapM (\_ -> getLine) [1..3] >>= mapM_ (print.length) ― 結局、型が合えば動くと言う点では普通の関数と同じ。
976デフォルトの名無しさん
垢版 |
2019/05/04(土) 09:29:06.06ID:vdfWhHEk
main = do str <- getLine
putStrLn str

出力に対しても、出力関数が左端になる事を保証します。
(普通の関数との合成なども出来るが、普通の関数が左端に来る関数に出力関数が引数になったり、合成されることは無い)

main = map print [1..3] ― 型エラー。

main = mapM_ print [1..3] ― IOモナド用のmapM(値を返す)やmapM_(値を捨てる)ならおk

main = print.length [1..10] ― 出力関数が左端に来るなら、普通の関数と関数合成可能。

main = mapM (\_ -> getLine) [1..3] >>= mapM_ (print.length) ― 結局、型が合えば動くと言う点では普通の関数と同じ。
977デフォルトの名無しさん
垢版 |
2019/05/04(土) 09:31:47.15ID:vdfWhHEk
main = do str <- getLine
putStrLn str

出力に対しても、出力関数が左端になる事を保証します。
(普通の関数との合成なども出来るが、普通の関数が左端に来る関数に出力関数が引数になったり、合成されることは無い)

main = map print [1..3] ― 型エラー。

main = mapM_ print [1..3] ― IOモナド用のmapM(値を返す)やmapM_(値を捨てる)ならおk

main = print.length [1..10] ― 出力関数が左端に来るなら、普通の関数と関数合成可能。

main = mapM (\_ -> getLine) [1..3] >>= mapM_ (print.length) ― 結局、型が合えば動くと言う点では普通の関数と同じ。
978デフォルトの名無しさん
垢版 |
2019/05/04(土) 15:52:20.32ID:adnCRUw6
オープンソースだとソースコードをチェックできるからセキュアだ、
というような言説がありますが、
例えばgithubでソースコードと実行可能バイナリが公開されていたとして、
本当にその実行可能バイナリがそのソースコードからビルドされたのか
分からないんじゃないですか?

何か簡単に確かめる方法はありますか?
2019/05/04(土) 15:53:47.87ID:z6rpqItx
ソースあるなら自分でビルドするから
2019/05/04(土) 16:01:13.99ID:xRy8GHS2
オプソの開発者にも同じこと思ってる人は居てreproducible buildsみたいなプロジェクトもあるっちゃある
2019/05/04(土) 16:11:09.41ID:t4zJt5DP
バイナリに電子署名付けて私がビルドしましたって証明するのが限界で
元のソースを辿るのは無理だと思う
2019/05/04(土) 16:11:46.40ID:eyQzK648
このビルドはワシが育てた。
983デフォルトの名無しさん
垢版 |
2019/05/05(日) 01:22:11.46ID:kL93aIfd
>>978
ソースからビルドしたものとサイズを比較する。
2019/05/05(日) 01:44:58.76ID:fizRIu1X
>>983
そんなものあてにならん
ビルドしたことないのか
2019/05/05(日) 09:46:43.61ID:OAMUtfzX
同じツールセットと設定でビルドすればバイナリの差分確認くらいできる。
タイムスタンプとか差分の出るところはわかってるんだから。
プロジェクトによってはちゃんと複数人でそれぞれビルドして同じソースからビルドしたバイナリなのを確認したりする。
2019/05/05(日) 10:51:39.58ID:VtQYfSta
>>985
なに全時代的なことしてるんだ?w

ビルドはCIによって自動的に行われ、ビルド手順は
ソースコードと同じようにバージョン管理されるんだから
そんな無意味で時間がかかる=コストがかかる馬鹿げた方法をやる必要はない
2019/05/05(日) 10:51:59.45ID:VtQYfSta
× 全時代
○ 前時代
988デフォルトの名無しさん
垢版 |
2019/05/05(日) 13:13:33.44ID:ptHRpxR9
>>984
簡易チェックとしては定石だけどな。
2019/05/05(日) 13:22:15.36ID:2252L+7N
VSでC#をビルドすると同じソースでもハッシュ変わるし改変してもバイナリサイズ同じとか普通にあるから困る
2019/05/06(月) 11:31:21.72ID:fIiGJlWA
VS2017でC#使ってFramework4.6.1でやってるんですが
PrintDocumentで、デバイスとプリンターにあるFaxに出力をかけると
普通は宛先情報の入力画面が表示されると思うんですが
PrintDocumentの方で何か情報をインプットするなりして
宛先入力画面を表示させない方法とか無いですか?
2019/05/06(月) 16:24:52.13ID:inXvnXa3
>>989
プロジェクト設定変えろ。
決定論的ビルドできる。
992デフォルトの名無しさん
垢版 |
2019/05/06(月) 23:19:25.93ID:w/vwmWEJ
>>990
入力画面が表示されるのは普通じゃないだろw
2019/05/07(火) 08:46:11.21ID:dYmQvrG6
>>992
え?普通じゃないんです?
宛先入力せずにFAX送れないでしょ?
2019/05/07(火) 08:51:09.03ID:fgAbOfTE
そろそろ次スレ
2019/05/07(火) 09:21:04.78ID:7undKR/x
次スレは再利用しようぜ
スレ立てるまでもない質問はここで 149匹目
https://mevius.5ch.net/test/read.cgi/tech/1529199088/
996デフォルトの名無しさん
垢版 |
2019/05/07(火) 19:45:31.20ID:5Jh8r5ay
>>993
だから情報が足らない状態で印刷しようとするからそうなる。
2019/05/07(火) 19:51:59.86ID:dGHDXi4W
>>993
PrintDocumentは印刷のためのもので宛名聞いてきているのはFaxの方じゃない?
https://docs.microsoft.com/ja-jp/dotnet/framework/winforms/controls/printdocument-component-overview-windows-forms
2019/05/08(水) 09:00:56.82ID:a9venIhx
javaって有料化するんじゃなかったっけ
2019/05/08(水) 10:56:42.82ID:I87+V7H7
Javaは有料化しないんじゃないの
OracleJDKは有料化するけど、他に無料のJDKが数種ある
2019/05/08(水) 11:03:11.96ID:OXX01uLM
return
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 185日 15時間 54分 54秒
レス数が1000を超えています。これ以上書き込みはできません。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況