Sigma belgisi haskell

Qanday qilib sth ni anglay olaman? sigma belgisi kabi haskell?

Men hisoblashni xohlayman:

http://img6.imagebanana.com/img/dulfkvz8/form.png

EDIT: Men yunoncha belgini ifodalashni xohlamayman. Men sumni hisoblashni xohlayman.

oldindan rahmat

1
Agar siz izlayotgan narsa haqiqiy sigma belgisi bo'lmasa, nomingizdagi "belgisi" so'zini ishlatmaslikni tavsiya qilaman.
qo'shib qo'ydi muallif MatrixFrog, manba
Bog'larning to'g'riligiga ishonchim komil emas; (x {sub i}, x {sub i + 1)) degan ma'noni anglatadimi?
qo'shib qo'ydi muallif John L, manba
Dasturning yunon harfidan dastur kodidan foydalanishni xohlaysizmi yoki biror narsani saralashni xohlaysizmi?
qo'shib qo'ydi muallif delnan, manba
yunoncha maktub emas, balki sth-ni to'ldirishni istayman.
qo'shib qo'ydi muallif user28061, manba
Ha. Buning ma'nosi shuki ...
qo'shib qo'ydi muallif user28061, manba

2 javoblar

xs = [x1, x2, ... xn] ro'yxatidagi x qiymatlari mavjud deb hisoblasangiz, siz uni quyidagicha yozishingiz mumkin:

sum $ zipWith fn xs (tail xs)
10
qo'shib qo'ydi
Bu sizning fikringizdan ko'ra kamrok. zipWith funktsiyasi 3 argumentni oladi: birinchi mustaqil o'zgaruvchi funktsiya ( fn ) va ikkinchi va uchinchi argumentlar esa ro'yxatlari. Agar siz onlayn hujjatlarni tekshirsangiz, siz ikkita ro'yxatdagi elementlarni birlashtirish uchun zipWith funktsional argumentni ishlatishini bilib olasiz va natijalarni ro'yxat sifatida qaytaradi (uzunligi qisqa kirish ro'yxat).
qo'shib qo'ydi muallif comingstorm, manba
fn x emas, balki bir i pastki indeksini emasligini bilasiz. Shunday qilib, bu tenglamalar nazarda tutmaydi. (Albatta, bu tenglamada typo.)
qo'shib qo'ydi muallif Thomas Eding, manba
Ushbu muammoni hal qilish uchun, ehtimol, bu yo'l bor.
qo'shib qo'ydi muallif user824425, manba
Va zipWith kodini tail bilan birgalikda ishlatganingizda, xuddi shu erda, sizning funktsiyangizni fn ro'yxatda har bir "qo'shni" juftga qo'llashingiz mumkin .
qo'shib qo'ydi muallif user824425, manba
Yaxshi kuzatuv, trinitis: DI, subtoydagi x bu erda aniqlanmagan erkin o'zgaruvchiga aylangani sababli, bu xatoligini tasavvur qilish xavfsiz deb o'ylaydi (men bir xil nomdagi < kodi> x ishlatilgan, lekin x - this-always-has-a-subscript x -olways-without-subscript) dan farqli o'laroq, .
qo'shib qo'ydi muallif user824425, manba
Men uchun bu juda rivojlangan ko'rinadi. Ehtimol, buni amalga oshirishning asosiy usuli mavjudmi?
qo'shib qo'ydi muallif user28061, manba
Yuqori baho tufayli, bu javobni yechim sifatida belgilab qo'ydim, biroq men o'zimning rekordi bilan yakunladim.
qo'shib qo'ydi muallif user28061, manba

Nima uchun oddiy rekursiv funktsiya emas?

sigma 0 fn = fn 
sigma i fn = fn + (sigma (i-1) fn)
3
qo'shib qo'ydi
Shuni yodda tutingki (sodda recursion) uzoq davomli ketma-ketliklar uchun juda yomon xulq-atvorga ega. Bundan tashqari, ushbu dastur faqat n> = 0 uchun fn * (i + 1) va i <0 fn funktsiyasini i funktsiyasini bajarishingiz kerak bo'ladi).
qo'shib qo'ydi muallif delnan, manba
Agar u uy vazifasini bajaradigan bo'lsa, sodda rekursiya yo'l bo'lishi mumkin.
qo'shib qo'ydi muallif nponeccop, manba