スレ立てるまでもない質問はここで 151匹目at TECH
スレ立てるまでもない質問はここで 151匹目 - 暇つぶし2ch993:デフォルトの名無しさん
19/05/03 15:06:25.51 ZByh2Qvf.net
>>969
参考書で勉強するような概念じゃない

994:デフォルトの名無しさん
19/05/03 21:00:57.78 zOIXy+Gc.net
>>969
URLリンク(jp.vuejs.org)

995:デフォルトの名無しさん
19/05/03 22:00:50.02 4DzoaGjH.net
関数型プログラミングでは副作用はどう表現するのですか?
ファイルのIOやprintfは必要だと思うのですが。。。

996:デフォルトの名無しさん
19/05/04 09:12:23.39 S+NYX3By.net
>>972
関数型言語のスレの方が良い気がするけど。。。
感覚的で良ければ。
圏論では変数も引数のない関数と見なすので、例えばgetLineみたいな副作用のある関数も一種の変数(外部からの入力が入っている変数)と見なします。
n = 1 ― 変数であり、引数なしの関数
入力

getLine ― 副作用関数であり、入力が入っている変数
ただ、入力を通常の値と同じにすると参照透明性が破れるので、IO Stringの様に別の型にして、>>=からしか値が取り出せない様にします。
(逆に通常の型にIOを付けたい場合はreturnを使います)
そうする事で、副作用のある関数は普通の関数も使えるけど、逆は無い事が保証されます。
ぶっちゃけ、純粋関数型言語にも副作用はあると言えますが
(無いと主張するなら虚数の掛け算みたいな感覚。実数に対して90度の回転みたいに、虚空からの値の変数への束縛。
ただしその変数は常に部分適用で見た目が隠されている。みたいな)、
参照透明性が破られることは無い。と言うのが純粋関数型言語の特徴ですね。

997:デフォルトの名無しさん
19/05/04 09:14:58.80 S+NYX3By.net
こう言う書き方はできない
(この場合、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) ― 結局、型が合えば動くと言う点では普通の関数と同じ。

998:デフォルトの名無しさん
19/05/04 09:16:00.91 S+NYX3By.net
制限に引っかかった。。。
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) ― 結局、型が合えば動くと言う点では普通の関数と同じ。

999:デフォルトの名無しさん
19/05/04 09:29:06.06 vdfWhHEk.net
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) ― 結局、型が合えば動くと言う点では普通の関数と同じ。

1000:デフォルトの名無しさん
19/05/04 09:31:47.15 vdfWhHEk.net
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) ― 結局、型が合えば動くと言う点では普通の関数と同じ。

1001:デフォルトの名無しさん
19/05/04 15:52:20.32 adnCRUw6.net
オープンソースだとソースコードをチェックできるからセキュアだ、
というような言説がありますが、
例えばgithubでソースコードと実行可能バイナリが公開されていたとして、
本当にその実行可能バイナリがそのソースコードからビルドされたのか
分からないんじゃないですか?
何か簡単に確かめる方法はありますか?

1002:デフォルトの名無しさん
19/05/04 15:53:47.87 z6rpqItx.net
ソースあるなら自分でビルドするから

1003:デフォルトの名無しさん
19/05/04 16:01:13.99 xRy8GHS2.net
オプソの開発者にも同じこと思ってる人は居てreproducible buildsみたいなプロジェクトもあるっちゃある

1004:デフォルトの名無しさん
19/05/04 16:11:09.41 t4zJt5DP.net
バイナリに電子署名付けて私がビルドしましたって証明するのが限界で
元のソースを辿るのは無理だと思う

1005:デフォルトの名無しさん
19/05/04 16:11:46.40 eyQzK648.net
このビルドはワシが育てた。

1006:デフォルトの名無しさん
19/05/05 01:22:11.46 kL93aIfd.net
>>978
ソースからビルドしたものとサイズを比較する。

1007:デフォルトの名無しさん
19/05/05 01:44:58.76 fizRIu1X.net
>>983
そんなものあてにならん
ビルドしたことないのか

1008:デフォルトの名無しさん
19/05/05 09:46:43.61 OAMUtfzX.net
同じツールセットと設定でビルドすればバイナリの差分確認くらいできる。
タイムスタンプとか差分の出るところはわかってるんだから。
プロジェクトによってはちゃんと複数人でそれぞれビルドして同じソースからビルドしたバイナリなのを確認したりする。

1009:デフォルトの名無しさん
19/05/05 10:51:39.58 VtQYfSta.net
>>985
なに全時代的なことしてるんだ?w
ビルドはCIによって自動的に行われ、ビルド手順は
ソースコードと同じようにバージョン管理されるんだから
そんな無意味で時間がかかる=コストがかかる馬鹿げた方法をやる必要はない

1010:デフォルトの名無しさん
19/05/05 10:51:59.45 VtQYfSta.net
× 全時代
○ 前時代

1011:デフォルトの名無しさん
19/05/05 13:13:33.44 ptHRpxR9.net
>>984
簡易チェックとしては定石だけどな。

1012:デフォルトの名無しさん
19/05/05 13:22:15.36 2252L+7N.net
VSでC#をビルドすると同じソースでもハッシュ変わるし改変してもバイナリサイズ同じとか普通にあるから困る

1013:デフォルトの名無しさん
19/05/06 11:31:21.72 fIiGJlWA.net
VS2017でC#使ってFramework4.6.1でやってるんですが
PrintDocumentで、デバイスとプリンターにあるFaxに出力をかけると
普通は宛先情報の入力画面が表示されると思うんですが
PrintDocumentの方で何か情報をインプットするなりして
宛先入力画面を表示させない方法とか無いですか?

1014:デフォルトの名無しさん
19/05/06 16:24:52.13 inXvnXa3.net
>>989
プロジェクト設定変えろ。
決定論的ビルドできる。

1015:デフォルトの名無しさん
19/05/06 23:19:25.93 w/vwmWEJ.net
>>990
入力画面が表示されるのは普通じゃないだろw

1016:デフォルトの名無しさん
19/05/07 08:46:11.21 dYmQvrG6.net
>>992
え?普通じゃないんです?
宛先入力せずにFAX送れないでしょ?

1017:さまよえる蟻人間
19/05/07 08:51:09.03 fgAbOfTE.net
そろそろ次スレ

1018:デフォルトの名無しさん
19/05/07 09:21:04.78 7undKR/x.net
次スレは再利用しようぜ
スレ立てるまでもない質問はここで 149匹目
スレリンク(tech板)

1019:デフォルトの名無しさん
19/05/07 19:45:31.20 5Jh8r5ay.net
>>993
だから情報が足らない状態で印刷しようとするからそうなる。

1020:デフォルトの名無しさん
19/05/07 19:51:59.86 dGHDXi4W.net
>>993
PrintDocumentは印刷のためのもので宛名聞いてきているのはFaxの方じゃない?
URLリンク(docs.microsoft.com)

1021:デフォルトの名無しさん
19/05/08 09:00:56.82 a9venIhx.net
javaって有料化するんじゃなかったっけ

1022:デフォルトの名無しさん
19/05/08 10:56:42.82 I87+V7H7.net
Javaは有料化しないんじゃないの
OracleJDKは有料化するけど、他に無料のJDKが数種ある

1023:デフォルトの名無しさん
19/05/08 11:03:11.96 OXX01uLM.net
return

1024:1001
Over 1000 Thread.net
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 185日 15時間 54分 54秒

1025:過去ログ ★
[過去ログ]
■ このスレッドは過去ログ倉庫に格納されています


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch