関数型プログラミング言語Haskell Part34 (694レス)
上下前次1-新
177(1): デフォルトの名無しさん [sage] 2022/12/30(金) 19:21:21.60 ID:dTZ5gB6H(1) AAS
 Haskellはすでに見放されてる感ある 
178: デフォルトの名無しさん [] 2023/01/02(月) 01:15:52.75 ID:jETc9FsM(1) AAS
 >>177 
 そうなの?それは実務的な意味で? 
179: デフォルトの名無しさん [] 2023/01/02(月) 03:01:15.30 ID:/m9PT5PE(1/2) AAS
 ステマが酷すぎた。 
180: デフォルトの名無しさん [] 2023/01/02(月) 03:01:59.29 ID:/m9PT5PE(2/2) AAS
 言いなおそう。 
 某出版社のステマが酷すぎた。 
181: デフォルトの名無しさん [] 2023/01/03(火) 00:10:20.46 ID:7mh2KVDC(1) AAS
 見放されるようになったのは、 
 モナドってなに?というミステリアスで興味深い問いがいつのまにか 
 白けた話になったからじゃないか。もうどうでもいいというか。 
182: デフォルトの名無しさん [] 2023/01/03(火) 04:29:29.65 ID:yYGSV1g6(1) AAS
 技術評論社のせいでは? 
183: デフォルトの名無しさん [sage] 2023/01/04(水) 05:08:58.65 ID:peYJ5uzH(1) AAS
 メンテナーが次々と逃げ出してるのが象徴的・・ 
 わかりやすいコードを書くとすこぶるパフォーマンス悪いし 
 だからといって頑張ると一体これは何をしたいのだってなる 
  
 遅延評価がデフォルトなのも非常にまずいし 
 正格評価と切り分けて結局は書かなければならずまだまだ発展途上だと感じる 
 いっそのこと正格評価はなしとした方がいっそ清々しい 
184: デフォルトの名無しさん [] 2023/01/04(水) 18:10:50.86 ID:HUTbVNXS(1) AAS
 PureScriptに移行しようぜ 
 正格評価で使いやすいし 
185: デフォルトの名無しさん [sage] 2023/01/05(木) 03:59:19.12 ID:PBBtO4Nd(1/2) AAS
 しかし無限数列とか表現できなくなるのがなぁ 
186: デフォルトの名無しさん [sage] 2023/01/05(木) 12:24:48.41 ID:dQdtWkz5(1/2) AAS
 あんなもの現実には扱えないからな 
 適当な数値を上限にしとけばいいだけ 
187: デフォルトの名無しさん [sage] 2023/01/05(木) 13:19:36.00 ID:PBBtO4Nd(2/2) AAS
 イヤ、“表現できる”ってとこに意味があるんだよ 
188: デフォルトの名無しさん [sage] 2023/01/05(木) 14:40:58.83 ID:dQdtWkz5(2/2) AAS
 その割にデメリットの方が大きすぎる 
 やはりいらないよ 
189: デフォルトの名無しさん [] 2023/01/14(土) 23:43:44.49 ID:vLwyb8f9(1) AAS
 PureScriptと被ってるかな? 
 [GHC 9.6.1-alpha1 is now available - Announcements - Haskell Community](https://discourse.haskell.org/t/ghc-9-6-1-alpha1-is-now-available/5585) 
190: デフォルトの名無しさん [sage] 2023/01/17(火) 00:55:50.42 ID:zIKNxshB(1/2) AAS
 無限の長さの [a] を仮に廃止して他の言語と同じような方式に変えたら IO a のような型になる 
  
 生物学とか好きそうな人達は [a] と IO a の差が致命的 (つまり一方は死ぬが他方は生き残る) 
 と決めつける傾向がある 
191: デフォルトの名無しさん [sage] 2023/01/17(火) 01:31:37.81 ID:PP1OxyD+(1) AAS
 生物学関係ないな 
192: デフォルトの名無しさん [sage] 2023/01/17(火) 03:13:49.00 ID:zIKNxshB(2/2) AAS
 言語は死なないとか復活させればいいだけとか思うならもう生物学関係ない 
 そう思わないなら関係ありそう 
193: デフォルトの名無しさん [sage] 2023/01/17(火) 08:07:29.90 ID:Inpyi8aQ(1) AAS
 無意味な比喩表現 
194: デフォルトの名無しさん [sage] 2023/01/19(木) 01:20:46.84 ID:cE+DUb2P(1) AAS
 クラウドは中に人がいるのか無人なのか調べられないので 
 人間と機械を混同したのではなく不確実にした 
195: デフォルトの名無しさん [sage] 2023/01/19(木) 07:47:39.45 ID:7wHhBGeN(1) AAS
 意味不明 
 もう少し文章を書く練習をしろ 
196: デフォルトの名無しさん [sage] 2023/01/19(木) 17:42:25.26 ID:ugYwIpAQ(1/2) AAS
 嘘を書くのをやめろって言われない努力はしてる 
 現に、嘘だと言われない 
197: デフォルトの名無しさん [sage] 2023/01/19(木) 20:45:58.03 ID:LuniV29G(1/2) AAS
 間違ってさえいない文章 
 真偽以前に中身がない 
198: デフォルトの名無しさん [sage] 2023/01/19(木) 20:49:17.03 ID:LuniV29G(2/2) AAS
 それっぽいだけで少し読めば大したことすら書かれてないのがわかる 
199(1): デフォルトの名無しさん [sage] 2023/01/19(木) 21:18:32.97 ID:ugYwIpAQ(2/2) AAS
 「わかる」と「意味不明」は矛盾しそう 
 どっちかが嘘ついるのでは 
200: デフォルトの名無しさん [sage] 2023/01/19(木) 21:33:25.41 ID:QROh3L3M(1) AAS
 >>199 
 お前読解力もないのか 
 もうこのスレ来るなよ 
201: デフォルトの名無しさん [sage] 2023/01/19(木) 21:38:24.06 ID:CHvJHSS4(1) AAS
 お前も反応すんなよ 
202: デフォルトの名無しさん [sage] 2023/01/20(金) 01:52:23.49 ID:jpIFaaML(1) AAS
 いくら話題がないからって 
203: デフォルトの名無しさん [sage] 2023/01/21(土) 13:30:02.33 ID:ms4pFp6J(1) AAS
 職業倫理が苦手です 
204: デフォルトの名無しさん [sage] 2023/01/21(土) 16:31:20.60 ID:c9rqNig0(1) AAS
 スレチ 
205(1): デフォルトの名無しさん [sage] 2023/01/29(日) 20:58:33.14 ID:3238s/rq(1) AAS
 教科書の通りなのになんでエラーになるんだろう? 
 code: 
 fork :: (a->b, a->c) -> a -> (b, c) 
 fork (f, g)  h = fork (f  h, g  h) 
 main :: IO () 
 main = do  
  print $ fork (map fst, map snd) (zip [0 .. 4] "hallo") 
  
 Output: 
 Error occurred 
 ERROR line 2 - Type error in explicitly typed binding 
 *** Term           : fork 
 *** Type           : (a -> b -> c,a -> b -> d) -> a -> b -> (c,d) 
 *** Does not match : (a -> b -> c,a -> b -> d) -> a -> (b -> c,b -> d) 
206(1): デフォルトの名無しさん [sage] 2023/01/30(月) 02:11:06.80 ID:jVdK8GQm(1) AAS
 >>205 
 fork (f, g) h = (f h, g h) 
 では? 
207: デフォルトの名無しさん [sage] 2023/01/30(月) 04:31:24.57 ID:KsiNNj/4(1) AAS
 >>206 
 ありがとうございます。その通りでした。 
 code:  
 pair :: (a->b, a->c) -> a -> (b, c) 
 pair (f, g) x = (f x, g x) 
 fork :: (a->b, a->c) -> a -> (b, c) 
 fork (f, g) h = pair (f, g) h 
 main :: IO () 
 main = do 
  print $ fork (map fst, map snd) (zip [0 .. 4] "hallo") 
 Output:  
 -- ([0,1,2,3,4],"hallo") 
 これで上手く動いたので報告しておこうと思ったら、同じことを2時間以上も前に... oTL 
208(1): デフォルトの名無しさん [sage] 2023/02/01(水) 14:35:45.13 ID:RAEJFXsc(1) AAS
 Haskell使い(でLinux使い)の皆さんってxmonad使ってますか? 
 ウィンドウフォーカスを切り替えるときにfloatingウィンドウは無視するようにしたいです。 
 オリジナルのfocusUp'関数は 
 focusUp' :: Stack a -> a 
 focusUp' (Stack t (l:ls) rs) = Stack l ls (t:rs) 
 focusUp' (Stack t [] rs) = Stack x xs [] 
  where (x :| xs) = NE.reverse (t :| rs) 
 と大変記述量の少ない作りになってるのですが、これに最小の変更を加えて目的を実現するとしたらどうするべきでしょうか? 
209: デフォルトの名無しさん [sage] 2023/02/17(金) 00:17:58.82 ID:x2uQcODA(1) AAS
 ChatGPTにいろんなサンプル書かせて勉強させてもらってるわ 
210: デフォルトの名無しさん [sage] 2023/02/18(土) 07:53:47.68 ID:pwjCq/Fb(1) AAS
 >>208ですがスレチですかね 
 Linux板のタイル型WMスレに移動させていただきます (全く動いてないスレなのでダメ元ですが……) 
211(1): デフォルトの名無しさん [] 2023/02/23(木) 22:53:40.11 ID:3VcdShfb(1) AAS
 すみません 
 凄いHを楽しく学ぶ本を復習していて 
 疑問に思って試してみたのですが 
  
 具体的な型が決まらない値(単独変数で)は 
 下記の(Maybeや配列)の他にどんなのがありますでしょうか。 
  
 v1 :: Maybe a 
 v1 = Nothing 
  
 v2 :: [a] 
 v2 = [] 
  
 型拘束を使わない型変数を使って 
 ある単独変数の型を定義できない物かと思いました。 
  
 また関数でも具体的な型が決まらない値を返す 
 関数はありますでしょうか。 
 (Nothingや空リスト以外で) 
212(1): デフォルトの名無しさん [sage] 2023/02/24(金) 02:14:24.44 ID:PIH/rCf2(1) AAS
 >>211 
 Bing チャットに聞いたらこんなのが返ってきた。参考になるかな。 
  
 型変数を含むデータ型の例としては、関数型、代数的データ型、型クラスなどがあります。 
 例: data Tree a = Leaf a | Node (Tree a) (Tree a) 
 この代数的データ型Treeは任意の型aを要素とする二分木を表します。 
 例: class Eq a where 
 (==) :: a -> a -> Bool 
 (/=) :: a -> a -> Bool 
 この型クラスEqは任意の型aに対して等値性を定義するための仕組みです。 
213: デフォルトの名無しさん [sage] 2023/02/25(土) 11:21:45.77 ID:h/PI1ikt(1) AAS
 >>212 
 ありがとうございます。 
  
 凄いHを楽しく学ぶ本にも 
 Tree型があったので試してみました。 
  
 具体的な中身が「無い」事を現す値の場合 
 型引数で定義できるみたいです。 
  
 data Tree a = EmptyTree | Node a (Tree a) (Tree a) 
     deriving (Show) 
  
 v3 :: Tree a 
 v3 = EmptyTree 
214(2): デフォルトの名無しさん [] 2023/04/29(土) 14:07:24.45 ID:AoTbqg9O(1) AAS
 マルチポストだが教えてくれ 
 【追記あり】ChatGPTじゃなくて人力でモナドが発明された経緯を適当に調べた(ソース付き)。 
 https://qiita.com/iHdkz/items/e7a59eef034ab6d0fdc2 
 この記事正しいの?こんな話聞いたこともないし。圏論でモジュール性なんて扱えるの? 
215: デフォルトの名無しさん [sage] 2023/05/01(月) 00:30:45.06 ID:PDTetkfq(1) AAS
 >>214 
 よく分からんけど「モナドが発明された経緯」ではないな 
 1971年の本ですでにモナドについて書かれてるようだし 
 en.wikipedia.org/wiki/Categories_for_the_Working_Mathematician 
216: デフォルトの名無しさん [sage] 2023/05/03(水) 20:58:10.10 ID:ioA1phJ7(1/2) AAS
 >>214 
 英語で調べてもそんな話出てきたことはないな。 
217: デフォルトの名無しさん [sage] 2023/05/03(水) 21:14:18.69 ID:ioA1phJ7(2/2) AAS
 これにもそんなストーリー書いてない 
 https://pdfs.semanticscholar.org/59d7/a0f5c341ab450e2893eb73384895524bbebd.pdf 
218: デフォルトの名無しさん [sage] 2023/06/09(金) 14:58:05.85 ID:GYy2ex4t(1) AAS
 lispやらカリー=ハワード同型やらの関連性は 
 数学的な意味では遥か前だし実装上の話かな 
 https://en.m.wikipedia.org/wiki/Timeline_of_category_theory_and_related_mathematics 
219: デフォルトの名無しさん [sage] 2023/06/20(火) 00:30:03.89 ID:qm9+2t5E(1) AAS
 do 記法でのメモ化について質問です 
 例えば 
  
 do 
     let x <- someComplexExpression 
     print $ f x 
     print $ g x 
  
 のようなコードがあったとしてxの値はf xの評価の時点とg xの評価の時点で2回別々にされますか? 
 少なくともHaskell2010 Lang. Rep. (以下HLR2010)ではこのような場合メモ化されて2回展開されることはないという記述を見つけることはできませんでした 
 なので公式にはこのような記述だと2回展開されると思わなければいけないのだと思います 
 ではsomeComplexExpressionを先に展開してから、展開したものをxにbindするにはどうすれば良いのでしょうか? 
 HLR2010ではswqを使えば良いとあるのですがこの場合 
 x <- seq someComplexExpression someComplexExpression 
 とかでうまく行くんでしょうか? 
 またそれでうまくいってるのかどうか確かめる方法はありますか? 
 つまり実際何回 someComplexExpressionが展開されてる回数を確かめる方法はありますか? 
 よろしくお願い致します 
220: デフォルトの名無しさん [sage] 2023/06/25(日) 14:24:09.04 ID:H+Ij4nqZ(1/3) AAS
 質問にさせていただきます 
 違う標数での有限体での計算を必要とするコードを考えてます 
  
 ある変数に𝔽₃や𝔽₅の値を混在して代入することはないので𝔽₃の元を生成するconstructor F3や𝔽₅の元を生成すconstructor F5を定義して 
  
 x = F3 $ 1+2 
 y = F5 $ 2-5 
  
 のような記述ができればいいなと思ってます 
 そのためには 
  
 data FiniteFieldCh3 = F3 Int 
 instance Num F3 where... 
  
 のようにF3,F5両方にNumを定義しないといけません 
 面倒なのでFiniteFieldと言うクラスを作って以下のようにできないかやってみたところ 
  
 class FiniteField t where 
     modulus :: t -> Int 
     toInt :: t -> Int 
     fromInt :: Int -> t 
  
 instance ( FiniteField a  ) => ( Num  a ) where 
     x + y = fromInt  
         $ mod ( toInt x ) + ( toInt y ) ) ( char x ) 
221: デフォルトの名無しさん [sage] 2023/06/25(日) 14:24:14.71 ID:H+Ij4nqZ(2/3) AAS
 以下のようなerror が出てきます 
  
 prog.hs:22:10: error: 
     • The constraint ‘FiniteField a’ 
         is no smaller than the instance head 
       (Use UndecidableInstances to permit this) 
     • In the instance declaration for ‘(Num a)’ 
    | 
 22 | instance ( FiniteField a  ) => ( Num  a ) where 
    |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
  
 コレはなんですか? 
 ちなみにFlexibleInstancesというのが必要かとの事なので冒頭に 
 {-# LANGUAGE FlexibleInstances #-} 
 を入れています 
 コンパイラはghc8.4.4です 
 よろしくお願い致します 
222: デフォルトの名無しさん [sage] 2023/06/25(日) 14:43:47.12 ID:H+Ij4nqZ(3/3) AAS
 すいません、最後の行間違って修正前のやつコピペしました 
  
 class FiniteField t where 
     modulus :: t -> Int 
     toInt :: t -> Int 
     fromInt :: Int -> t 
  
 instance ( FiniteField a  ) => ( Num  a ) where 
     x + y = fromInt  
         $ mod ( toInt x ) + ( toInt y ) ) ( modulus x ) 
  
 です 
 よろしくお願い致します 
223: デフォルトの名無しさん [sage] 2023/06/25(日) 15:08:12.64 ID:CDxt6lPg(1/2) AAS
 型クラスの単相性制限とか、関数従属性とか、とか。。。 
 的外れなこと言ってたらごめん。 
224: デフォルトの名無しさん [sage] 2023/06/25(日) 15:23:50.61 ID:CDxt6lPg(2/2) AAS
 なんか Bard とかにつっこんでも情報得られるかも 
225: デフォルトの名無しさん [sage] 2023/06/25(日) 17:33:31.79 ID:OvK+yilq(1) AAS
 ありがとうございます 
 現在まだ調べてる最中なんですけど 
  
 https://stackoverflow.com/questions/7198907/haskell-constraint-is-no-smaller-than-the-instance-head 
  
 によるとどうもclass制約の解決をloopさせないための制約くさいです 
 つまり「aがclasd Cのときclass Dにも入れる事ができる」、「aがclass Dのときclass Cにも入れる事ができる」の宣言 
  
 class ( C a ) => D a where ... 
  
 class ( D a ) => C a where ... 
  
 のような宣言があるとまずいようです 
 なので=>の左側の型は右側の型より“短い”事が要求されるそうです 
 例えばtoDみたいな型生成子を作っておいて 
  
 class ( C a ) => ( D ( toD a ) ) where ... 
  
 などとしないといけないらしいです 
 でその後newtypeを使うとどうやらこうやら書いてあるんですけどなんのことやら 
226(1): デフォルトの名無しさん [sage] 2023/07/03(月) 23:45:49.20 ID:QPaqlNti(1) AAS
 値とmoduleどっちも含んだdata作ればいいのでは 
227: デフォルトの名無しさん [sage] 2023/07/04(火) 00:24:50.19 ID:+0TfLuMN(1) AAS
 >>226 
 こういうやつですね 
  
 data FiniteField = FF { val :: Int, modulus :: Int } deriving ( Show, Eq) 
  
 instance Num FiniteField where 
     x + y = FF ( mod ( ( val x ) + ( val y ) ) ( modulus x ) )( modulus x ) 
     x * y = FF ( mod ( ( val x ) * ( val y ) ) ( modulus x ) )( modulus x ) 
     fromInteger x = FF x 1 
  
 でもコレだと例えば 
  
 x = FF 2 7 
 y = FF 4 7 
 x + y 
  
 のような場合実行時にプログラムは値に格納されてるmodulusを読みに行ってから割り算行うという手間がかかります 
 しかし私のやりたいプログラムではそもそも各変数のmodulusは確定していてそもそも読みに行くのはバカバカしい感じがします 
 実行時にxもyも𝔽₇の元と決まりきっててmod の第二引数はコンパイル時点で7と決まっているのにその7を読みに行く作業が無駄に思えるんです 
 しかもコレは型ではなく値なので型チェックの恩恵も受けることができません 
 プログラム中に出てくるmodilus事に全部F2型、F3型、F5型‥と全部作って全部のNum instance一個ずつ定義してとやればできるんでしょうけど、何が上手い逃げ道はないものかと 
228: デフォルトの名無しさん [sage] 2023/07/04(火) 11:11:04.93 ID:rN492ZrW(1) AAS
 この記事では剰余環を作っているみたいだけど、参考にならないかな 
  
 https://qiita.com/gummycandy/items/9abca700eea7f46626e4 
229: デフォルトの名無しさん [sage] 2023/07/06(木) 01:04:07.84 ID:sds/6LG1(1) AAS
 みなさん情報ありがとうございます 
 色々紹介していただいたソースとか自分で探してみた情報とかでまずは一区切りつける事にしました 
 こんな感じになりました 
 https://ideone.com/3Lhc4z 
230: デフォルトの名無しさん [] 2023/08/05(土) 13:07:07.29 ID:1IOAcn45(1) AAS
 hage 
231: デフォルトの名無しさん [sage] 2023/09/04(月) 14:41:20.09 ID:FcZAE9nJ(1) AAS
 haskellは廃れてきてるな、悲しい 
 スペースリーク対応は難しすぎるしライブラリ類も最新のghcだと使えなかったりしてなんか 
 実用的な言語じゃないなって思う 
 xmonadなんかはほとんどBangPatternだよね 
 そういえば自動でstrictにする拡張が2個ぐらいあったけど追ってないどうなの 
232: デフォルトの名無しさん [] 2023/09/16(土) 21:21:50.35 ID:6682wM15(1/3) AAS
 数学の集合は普通順番を付けて書くと思うのですが(添字でアクセスできたほうが便利) 
 なぜ多くの言語では集合に順番がないのでしょうか? 
233: デフォルトの名無しさん [] 2023/09/16(土) 21:25:49.38 ID:6682wM15(2/3) AAS
 等価判定演算子では順番を問わないが、 
 記法としては順番によるインデックスアクセスもできる、が便利だと思うのですが 
  
 一番基礎的な集合の一つである自然数が順番を重視して扱うように大半の集合は順序を整頓して書かないと実用上不便ではないでしょうか? 
234: デフォルトの名無しさん [sage] 2023/09/16(土) 23:06:28.20 ID:XG1/1lYn(1) AAS
 順番がないやつと順番があるやつは 
 なぜ対等な関係ではなく前者が一般的で後者が特殊だと言われるのか? 
  
 逆に、複素数はなんで虚部があるやつが一般的で虚部がないやつが特殊なのか? 
235: デフォルトの名無しさん [] 2023/09/16(土) 23:13:33.62 ID:6682wM15(3/3) AAS
 数学的概念として等価だったりどちらが特殊とか言えないのは納得しています 
  
 ただ、集合は順序を維持して記述するようにしたほうが明らかに認知的負荷が少なく、数学的記法でも多くの場合でそうなっていると思うのですが、 
 多くの言語で組み込み型の集合がそうなっていないのはどのような思想によるものでしょうか?という質問です 
236: デフォルトの名無しさん [sage] 2023/09/17(日) 02:24:17.53 ID:yNwKlKA6(1) AAS
 データ型としての起源としては 
 素集合データ構造から始まっているようなので 
 素である(disjoint)ことがまず要求されて 
 他に集合という名前が使われていないことから 
 素で非順序的なデータ型のことを集合型と呼ぶことになった模様 
237: デフォルトの名無しさん [sage] 2023/09/17(日) 02:39:39.55 ID:XqeO/FaW(1) AAS
 組み込み型とユーザー定義型の区別をなくす思想はある 
 最も正しいことを実現する思想ではなくミスをした場合の罪が軽くなる 
238: デフォルトの名無しさん [sage] 2023/09/17(日) 23:47:13.96 ID:70jB6wMR(1) AAS
 初心者は++を使うけどなれたら<>を使ってる人が多い気がする 
 SemiGroupであれさえすれば使える<>を使った方が汎用的にかけるからかな 
239: デフォルトの名無しさん [sage] 2023/09/18(月) 10:00:00.93 ID:E5yF50jH(1) AAS
 俗説が廃れるのは「時代が変われば正しさが変わるから」ではありません 
 俗説が正解だった時代などない 
240: デフォルトの名無しさん [sage] 2023/09/19(火) 19:53:05.75 ID:QCYT99dv(1/3) AAS
 unixのtouchを実現したいのですが 
  
 {-# LANGUAGE OverloadedStrings #-} 
 import System.Posix.Files.ByteString 
  
 main = do 
   touchFile "hoge.txt" 
  
 touch.hs: hoge.txt: touchFile: does not exist (No such file or directory) 
 というエラーがでます 
 ないのは当たり前でtouchで作ろうとしてるのですがバグがあるのでしょうか? 
241: デフォルトの名無しさん [sage] 2023/09/19(火) 19:54:00.31 ID:QCYT99dv(2/3) AAS
 unixのtouchを実現したいのですが 
  
 {-# LANGUAGE OverloadedStrings #-} 
 import System.Posix.Files.ByteString 
  
 main = do 
   touchFile "hoge.txt" 
  
 touch.hs: hoge.txt: touchFile: does not exist (No such file or directory) 
 というエラーがでます 
 ないのは当たり前でtouchで作ろうとしてるのですがバグがあるのでしょうか? 
242: デフォルトの名無しさん [sage] 2023/09/19(火) 19:58:16.28 ID:QCYT99dv(3/3) AAS
 すみません、書き込むボタンの反応がなかったので連投になってしまいました 
243: デフォルトの名無しさん [sage] 2023/09/19(火) 20:14:24.31 ID:a563RtWW(1/3) AAS
 touchの本来の意味を考えれば、まあできなくてもそういうもんだなと思ふ 
244: デフォルトの名無しさん [sage] 2023/09/19(火) 20:14:45.64 ID:a563RtWW(2/3) AAS
 touchの本来の意味を考えれば、まあできなくてもそういうもんだなと思ふ 
245: デフォルトの名無しさん [sage] 2023/09/19(火) 20:18:27.88 ID:a563RtWW(3/3) AAS
 ありゃ俺も連投しちまったすまん 
 なんか5ch重いっぽいね 
246(1): デフォルトの名無しさん [sage] 2023/09/20(水) 08:38:40.03 ID:I55f6i4N(1/2) AAS
 for i in * ; do touch anotherdir/$i ; done 
247: デフォルトの名無しさん [] 2023/09/20(水) 08:53:25.46 ID:I55f6i4N(2/2) AAS
 >>246(bash)でお茶を濁した 
  
 perlが明日消えてなくなるらしいのでHaskellをPerlの代わりに使おうと思う 
 正規表現とグロブ、ファイル入出力はできた 
 他に何かあるかな 
248(1): デフォルトの名無しさん [sage] 2023/09/22(金) 12:15:07.45 ID:NjV4q9P3(1/2) AAS
 数値のリストl=[1,10,3]みたいなのを 
 1 10 3と出力したい。末尾には空白はあってはならないとする 
 最初 
 putStrLn $ intersperse ' ' $ foldl' (\acc x -> acc ++ show x) [] l 
 こんなのを考えたのだが10も1 0と分解されてしまった 
 しかたなく泥臭いこんなコードを書いたのだがもっといい方法はないだろうか 
 mp [] = return () 
 mp [x] = putStrLn $ show x 
 mp (x:xs) = do 
 putStr $ show x ++ " " 
 mp xs 
249: デフォルトの名無しさん [sage] 2023/09/22(金) 13:06:36.18 ID:8SLDLfd5(1) AAS
 https://jutememo.blogspot.com/2008/06/haskell-join-listdata-intersperse.html 
250: デフォルトの名無しさん [sage] 2023/09/22(金) 14:01:02.50 ID:NjV4q9P3(2/2) AAS
 putStrLn $ intercalate " " $ map show l 
 これでいけました 
251: デフォルトの名無しさん [sage] 2023/09/22(金) 14:01:12.58 ID:W8j4O+ex(1) AAS
 泥臭いだけで罪があるかのように日常的に刷りこまれてるから 
 本当の有罪確定したやつは絶対許してもらえないよな 
 そりゃそうだよな 
252: デフォルトの名無しさん [sage] 2023/09/27(水) 15:30:51.70 ID:9Ywamwi5(1) AAS
 {-# LANGUAGE BinaryLiterals #-} 
 この拡張をいれても 
 let t = read "0x111" :: Int -- 16進数にパースできる 273 
 let s = read "0b111" :: Int -- 2進数にはパースできない 
 微妙に不便だ 
253: デフォルトの名無しさん [sage] 2023/09/27(水) 17:59:16.99 ID:k7PwLxD8(1) AAS
 readが定義されたモジュールは別のLANGUAGEってこと? 
254(1): デフォルトの名無しさん [sage] 2023/10/11(水) 15:16:15.28 ID:1pnnvG+R(1/2) AAS
 groupBy (\a b -> snd a == snd b) 
 これを括弧を使わずにかけますか 
 groupBy ((==)<$>snd<*>snd)だと(a,b)->Boolとなって(a,b)->(c,d)->Boolとは型があいませんでした 
255: デフォルトの名無しさん [sage] 2023/10/11(水) 17:39:54.48 ID:Fikp0OWy(1) AAS
 >>254 
 import Data.Function 
 groupBy ((==) `on` snd) 
  
 結局かっこは使うのだけど、これがあなたの求めるものでしょうか 
256: デフォルトの名無しさん [sage] 2023/10/11(水) 22:05:36.63 ID:1pnnvG+R(2/2) AAS
 括弧を使わずにじゃなくてラムダを使わずにでした 
 まさに欲しかったのそれです 
 ありがとうございました!! 
257: デフォルトの名無しさん [sage] 2023/10/18(水) 05:38:40.90 ID:vCrdR6l9(1) AAS
 QuickCheckを勉強しているんですが 
 Runtime Errorを検出したくて次のように書きました 
 anの要素は2以上n以下で複数回出現します 
 testcaseがほとんどdiscardされるのですがリストをchoose (2,n)とかで生成するには 
 どうしたら良いのでしょうか 
 verboseCheckを指定してみるとskippedだらけなのですが 
 スキップしたやつは表示しないで欲しい 
  
 prop :: Positive Int -> [Int] -> Property         
 prop (Positive n) an = all (>=2) an && length an == n ==>  monadicIO $ do 
   a' <- run (solve n an) 
   assert True 
258(1): デフォルトの名無しさん [sage] 2023/11/16(木) 18:41:54.01 ID:wXoixzgD(1) AAS
 岡部健、復活したよ! 
  
 エックス内を 
 “Ken140291“ 
 で探してみて下さい。 
  
 最近登録したばかりの様です。 
259: デフォルトの名無しさん [sage] 2023/11/18(土) 16:03:54.22 ID:sLhTkQlu(1) AAS
 自分で書き込んでいるのでは・・・。 
260(1): デフォルトの名無しさん [sage] 2023/11/19(日) 15:31:44.23 ID:/inwpH7b(1) AAS
 >>248 
 init $ folfl (\a x -> a++[show x]++“ “) ““ [3,10,1] でOK 
261: デフォルトの名無しさん [sage] 2023/11/20(月) 09:46:08.35 ID:sZ0M6Dsh(1) AAS
 >260 打ち間違えた! 
 lnlt$foldl(\a x->a ++show x++" ")[][1,10,3] 
 が正解。 
262: デフォルトの名無しさん [sage] 2023/11/20(月) 14:32:44.66 ID:4MiKC4cJ(1) AAS
 >>258 
 ぎゃははははははは 
263: デフォルトの名無しさん [sage] 2023/11/20(月) 21:45:30.49 ID:Jf1v4QK8(1) AAS
 https://github.com/ken-okabe/functional-programming-from-scratch-ja#before 
  
 > Unkown(気づいてない) 
  
 ウンコウンわろた。 
264: デフォルトの名無しさん [sage] 2023/11/20(月) 23:57:47.37 ID:N43MAaAU(1) AAS
 スレチ 
265: デフォルトの名無しさん [sage] 2023/11/21(火) 12:01:48.14 ID:MS7pneIs(1) AAS
 毛の壁くん復活してたのか!! 
266: デフォルトの名無しさん [sage] 2023/11/21(火) 12:21:46.16 ID:W0g+S6dW(1) AAS
 https://archive.md/m7008 
  
 毛の壁(岡部健)についてはここが詳しい 
267(1): デフォルトの名無しさん [sage] 2023/11/22(水) 15:27:17.26 ID:1OepVPCl(1) AAS
 こんなコードがあるのですが 
 cumsum k = unfoldr next . (,) 0 
   where 
     next :: (Int, [Int]) -> Maybe (Int, (Int, [Int])) 
     next (acc, x : xs) | acc <= k - x, acc' <- acc + x = Just (acc', (acc', xs)) 
     next _                                             = Nothing 
 acc <= k-xはわかるのですが、acc' <- acc + xというのはどういう文法なのですか? 
 リスト内包表記でもないですし条件式の部分でモナドを扱ってるわけではないですよね? 
268: デフォルトの名無しさん [sage] 2023/11/22(水) 16:31:30.12 ID:PuIW3qrN(1) AAS
 >>267 
 パターンガードかな 
 https://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%BC%E3%83%89_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0) 
269: デフォルトの名無しさん [sage] 2023/11/23(木) 07:24:43.49 ID:WRBO39fy(1) AAS
 <-はパターンガード修飾子と呼ぶのですね 
 初めて知りました 
 ありがとうございました 
270(1): デフォルトの名無しさん [sage] 2023/11/24(金) 17:42:26.91 ID:V3Fz2AWZ(1) AAS
 毛の壁のTwitterの新しいアカウントは 
  
 Ken140291 
 FPFSstutorial 
 leadmove3648637 
  
 です!! 
271: デフォルトの名無しさん [] 2023/12/04(月) 12:27:24.28 ID:GjmDAseS(1) AAS
 >>270 
 ぎゃっはっはっはっはw 
272: デフォルトの名無しさん [sage] 2024/01/01(月) 20:17:21.69 ID:DcfOChZv(1) AAS
 mapAccumL/Rの使いどころがよくわからないのですが 
 どういう時に使うとかの指針ってありますか? 
273: デフォルトの名無しさん [] 2024/01/09(火) 22:50:44.14 ID:3mg8b04T(1) AAS
 ここ5年で発売されたHaskellの書籍で最も優れたものを紹介してください 
274: デフォルトの名無しさん [] 2024/01/12(金) 10:55:28.35 ID:cAhPSGjh(1) AAS
 オワコン 
275: デフォルトの名無しさん [sage] 2024/02/29(木) 01:38:01.78 ID:d2gqoSk4(1) AAS
 windowsにインストールできんみたいだなcabalがエラー? 
 まあwindowsでやるなってことだな 
276: デフォルトの名無しさん [] 2024/03/03(日) 23:47:35.89 ID:9XAeTkis(1) AAS
 モナドについて、床下配線に例えられたり、世界を受け取って副作用後の世界を返すと(IOモナドについて)語られたりするのが当時は分からなくて、考えた結果 
  
 何かから値を取り出し、関数適用して(その関数が)何かに値を戻す「動き」をモナドという。 
  
 って結論になっていたのだが、IOモナドも含めてもっと良い例えはないかと考えた結果、 
  
 モナドとは、アウトソーシング(外部依頼)を数学的に表現したもの。 
  
 という結論に至った。 
  
 アウトソーシング先が(数学の)外の世界だとIOモナドで、同じ数学の世界だとその他のモナド。 
  
 それならHaskell自身は「この関数実行しておいて~」って依頼出して結果を受け取るだけだから、 
 副作用はないと言う主張に矛盾はない(のか?) 
 (もしくは、IOモナドはHaskellが受け取れる形の値を返すような入出力の「マシン語」を返してる?) 
  
 そう考えると、数学が「数学の外とのやり取り」という概念を獲得したと思うと凄い。 
上下前次1-新書関写板覧索設栞歴
あと 418 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.025s