Was ist funktionale Programmierung? Ich habe versucht, sie zu berühren, weil es meine erste Erfahrung mit funktionaler Programmierung mit JavaScript oder Python war. Ich lerne noch, also werde ich mir notieren, was ich vorerst gelernt habe.
Curry ist heute die Hauptsache: Curry:
main.js
//Filter für Filter
let talentList = [
{'name' : "Takeshi Takada" , 'Belong' : null},
{'name' : "Motto" , 'Belong' : null},
{'name' : "Midoni" , 'Belong' : "N○"},
{'name' : "Kokuni" , 'Belong' : null},
{'name' : "Kassan" , 'Belong' : "Kein Rashu"},
{'name' : "Urwald" , 'Belong' : "Kein Rashu"},
]
let getFi = talentList.filter( x => x.Belong === null )
getFi.forEach( e => console.log(e.name))
/*
Takeshi Takada
Motto
Kokuni
*/
//Für jeden mit dem Ergebnis der Filterung
let ZimushoAruName = []
talentList
.filter( x => !x.Belong)
.forEach( x => ZimushoAruName.push(x.name))
console.log(ZimushoAruName)
/*
(3) ["Midoni", "Kassan", "Urwald"]
*/
//Irgendwie beliebt reduzieren
//Geben Sie den größeren zurück
const getMax = (a,b) => a > b ? a : b
let fruits = [
{ "name" : "Apfel" , "price" : 200 },
{ "name" : "Traube" , "price" : 500 },
{ "name" : "Persimmon" , "price" : 150 },
{ "name" : "Erdbeere" , "price" : 300 },
{ "name" : "Melone" , "price" : 900 },
{ "name" : "Banane" , "price" : 100 },
]
let m = fruits.reduce( (a,b) => getMax(a,b.price),0)
console.log(m)
// 900
Funktion, diesmal schwer zu machen
main.js
const reduce = func => start => datas => datas.reduce( (acum,product) => func(acum)(product.price),0)
main.js
let ggj = function(c){
return function(e){
console.log(c + e)
}
}
hogee = ggj("Takeshi Takada") // c
hogee("Es ist eine Straße") // e
//Es ist die Straße von Takeshi Takada
main.js
let a = b => c => d => b * c * d
console.log(a(1)(2)(3))
console.log(a(1)(2)(0))
// 6
// 0
main.js
const products = [
{ "name" : "Tee" , "price" : 100 , "sales": 1000 },
{ "name" : "Reisbällchen" , "price" : 150 , "sales": 1300 },
{ "name" : "Bento" , "price" : 500 , "sales": 300 },
{ "name" : "Kuchen" , "price" : 300 , "sales": 200 },
{ "name" : "Gebratenes Huhn" , "price" : 200 , "sales": 500 },
]
const add = x => y => x + y
const reduce = func => start => datas => datas.reduce( (acum,product) => func(acum)(product.price),0)
const getSumPrice = reduce(add)(0)(products)
console.log(getSumPrice)
// 1250
Funktion, diesmal schwer zu machen
qiita.py
def getData(f):
return lambda w : lambda v : lambda d : lambda : filter(lambda x : f(x[w])(v),d)
qiita.py
product = [
{'name':'takadakenshi','price':300},
{'name':'yokoyamamidori','price':100},
{'name':'babayutaka','price':500},
{'name':'nodazori','price':10},
]
#Rückkehr mit Filter
def addfilter(datas,price):
return filter(lambda x: x['price'] >= price,datas)
def searchWithPrice(datas):
return lambda price : lambda : addfilter(datas,price)
getsan = searchWithPrice(product)(300)
getyon = searchWithPrice(product)(400)
print(list(getsan()))
print('++++++++++++++')
print(list(getyon()))
'''__Ausgabeergebnis______________
[{'name': 'takadakenshi', 'price': 300}, {'name': 'babayutaka', 'price': 500}]
++++++++++++++
[{'name': 'babayutaka', 'price': 500}]
_____________'''
qiita.py
def eq(a):
return lambda b : a == b
def bigger(a):
return lambda b : a >= b
def kaiserSearch(func):
return lambda where : lambda word : lambda product : lambda : filter(lambda x : func(x[where])(word),product)
out2 = kaiserSearch(eq)('name')('babayutaka')(product)
out3 = kaiserSearch(eq)('price')(100)(product)
out4 = kaiserSearch(bigger)('price')(300)(product)
print(list(out2()))
print(list(out3()))
print('''
bigger:
''')
print(list(out4()))
'''
Ausgabeergebnis
[{'name': 'babayutaka', 'price': 500}]
[{'name': 'yokoyamamidori', 'price': 100}]
bigger:
[{'name': 'takadakenshi', 'price': 300}, {'name': 'babayutaka', 'price': 500}]
'''
qiita.py
import requests
url = 'https://jsonplaceholder.typicode.com/users'
json_data = requests.get(url).json()
def eq(a):
return lambda b : a == b
def getData(f):
return lambda w : lambda v : lambda d : lambda : filter(lambda x : f(x[w])(v),d)
result = getData(eq)('id')(1)(json_data)
print(list(result()))
Die von json erhaltene ID1 wird angezeigt.
Recommended Posts