«functional-programming» etiketlenmiş sorular

Fonksiyonel programlama, fonksiyonları kullanarak soyutlamalara dayanan, yan etkilerden ve durum değişikliğinden kaçınan bir programlama paradigmasıdır. Saf fonksiyonel programlama iş parçacığı için güvenlidir.

8
Scala görevlendirmesinin atanan değerden ziyade Birim'e göre değerlendirilmesinin motivasyonu nedir?
Scala görevlendirmesinin atanan değerden ziyade Birim'e göre değerlendirilmesinin motivasyonu nedir? G / Ç programlamasında yaygın bir model, aşağıdaki gibi şeyler yapmaktır: while ((bytesRead = in.read(buffer)) != -1) { ... Ancak Scala'da bu mümkün değil çünkü ... bytesRead = in.read(buffer) .. bytesRead'in yeni değerini değil, Birim'i döndürür. İşlevsel bir dilin dışında …


5
Scala currying ve kısmen uygulanan fonksiyonlar
Burada currying ve kısmen uygulanan fonksiyonların ne olduğuna dair birkaç soru olduğunun farkındayım , ancak bunların ne kadar farklı olduğunu soruyorum. Basit bir örnek olarak, burada çift sayıları bulmak için curried bir işlev verilmiştir: def filter(xs: List[Int], p: Int => Boolean): List[Int] = if (xs.isEmpty) xs else if (p(xs.head)) xs.head …

6
Programlama bağlamında “şeyleştirme” ve “şeyleştirme” ne anlama geliyor?
Bu terimi haskell ve fonksiyonel programlama hakkındaki bloglarda çok okudum (özellikle sigfpe blogunda ) ama ne anlama geldiğine dair bir fikrim yok. Çoğu zaman bilmemekten kurtuldum, ama bilseydim muhtemelen metinleri çok daha iyi anlardım. Google bana yardım etmedi. Teknik şeylerin içinde kayboluyorum. Ayrıca dünyanın teknik olmayan anlamı ("soyut somut olanı …

3
Fonksiyonel programlamada “kısmi fonksiyon” ile tam olarak ne kastedilmektedir?
Anladığım kadarıyla, kısmi işlevler, bir işleve beklenenden daha az parametre ileterek elde ettiğimiz işlevlerdir. Örneğin, bu doğrudan Python'da geçerliyse: >>> def add(x,y): ... return x+y ... >>> new_function = add(1) >>> new_function(2) 3 Yukarıdaki pasajda new_functionkısmi bir işlev vardır. Ancak, Haskell Wiki'ye göre , kısmi fonksiyonun tanımı Kısmi işlev, belirtilen …





3
Bu kelimeleri uygulamak katlamadan sonra bir işlem sonrası adım olmadan mümkün müdür?
Real World Haskell, bölüm 4, sayfa 98,words kıvrımlar kullanılarak uygulanıp uygulanamayacağını soruyor ve bu da benim sorum: Mümkün mü? Değilse, neden? Eğer öyleyse, nasıl? Ben her boşluk olmayan çıktı listesindeki son sözcüğe (bu otherwisenöbetçi olur ) başlaması gerektiğini ve bir boşluk emtpy kelimesinin eklenmesini tetiklemek gerekir fikrine dayanan aşağıdaki ile …

1
Scala Cats / fs2'de yığın güvenliği ile ilgili nedenler?
İşte fs2 belgelerinden bir parça kod . İşlev goözyinelemeli. Soru, yığının güvenli olup olmadığını nasıl bilebiliriz ve herhangi bir fonksiyonun yığın güvenli olup olmadığını nasıl anlayabiliriz? import fs2._ // import fs2._ def tk[F[_],O](n: Long): Pipe[F,O,O] = { def go(s: Stream[F,O], n: Long): Pull[F,O,Unit] = { s.pull.uncons.flatMap { case Some((hd,tl)) => …

2
Java8'deki veri listesini temizleme
Bir veri listesini temizlemek için, veri listesini ve gerçekleştirilecek temizlik işlemi listesini kabul eden bir yöntem oluşturdum. public <T> List<T> cleanData(List<T> data, List<Function<T, T>> cleanOps) { List<T>dataNew=data.stream().map((str) -> { T cleanData = str; for(Function<T,T> function:cleanOps) { cleanData=function.apply(cleanData); } return cleanData; }).collect(Collectors.toList()); return dataNew; } Buradaki sorun, Collectors.toList()yeni bir liste döndürürken …

5
Println neden saf olmayan bir işlev olarak kabul edilir?
Scala'da kitap programlamayı okuyorum ve söylendi: ... bu durumda yan etkisi standart çıktı akışına yazdırılıyor. ve aynı etki için println aynı çıktıyı (sanırım) UPDATE'i her zaman aradığımızda yazdırdığından, yan etkinin nerede olduğunu görmüyorum : println(5) 5 yazdıracak , aramanın println(5)5 dışında bir değer yazacağı bir durum görmüyorum !!


1
Haskells Zayıf Kafa Normal Form
Bazı rahatsız edici şeyler üzerinde tökezledim. Haskell'in zayıf kafa normal formu (WHNF) ile çalıştığını biliyorum ve bunun ne olduğunu biliyorum. Aşağıdaki kodu ghci'ye yazarak (şu komutu kullanıyorum: ifadeyi WHNF'ye bilgime indirgeyen sprint): let intlist = [[1,2],[2,3]] :sprint intlist veren intlist = _bu markaları tamamen bana seziyorum. let stringlist = ["hi","there"] …

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.