હાસ્કેલ એક સંપૂર્ણ કાર્યાત્મક પ્રોગ્રામિંગ ભાષા છે જે તેની ઉચ્ચ-સ્તરની સુવિધાઓ અને અમૂર્તતા માટે જાણીતી છે. એક નોંધપાત્ર ક્ષેત્ર જ્યાં હેસ્કેલની શક્તિ પ્રસરે છે તે અનંત સૂચિઓ સાથે કામ કરે છે. હાસ્કેલના આળસુ મૂલ્યાંકન સાથે, અમે યાદશક્તિના થાકની સમસ્યાઓમાં ભાગ્યા વિના અનંત સૂચિઓનું પ્રતિનિધિત્વ અને હેરફેર કરી શકીએ છીએ સિવાય કે અમે સૂચિને સંપૂર્ણ રીતે વાપરવાનું કહીએ. એક સૂચિની કલ્પના કરો જે સતત ચાલુ રહે છે, જેમ કે 1 થી અનંત સુધીની સંખ્યા, આવી સૂચિ એ અનંત સૂચિ છે.
હાસ્કેલમાં અનંત યાદીઓ
હાસ્કેલમાં, અનંત સૂચિઓ સાથે વ્યવહાર કરવા માટે અસંખ્ય કાર્યો છે. સૌથી મૂળભૂત છે
repeat
. આ કાર્ય એક મૂલ્ય લે છે અને તે મૂલ્યની બનેલી અનંત સૂચિ બનાવે છે. દાખલા તરીકે,
repeat 7
સાતની અનંત યાદી આપશે. આ સંદર્ભમાં અન્ય ઉપયોગી કાર્ય છે
iterate
કાર્ય આ ફંક્શન ફંક્શન અને પ્રારંભિક મૂલ્ય લે છે. તે ફંક્શનને શરૂઆતના મૂલ્ય પર લાગુ કરે છે, પછી તે ફંક્શનને પરિણામ પર લાગુ કરે છે, પછી પરિણામના પરિણામ પર, અને તેથી વધુ, અનંત સૂચિ બનાવે છે.
અનંત યાદીઓ, જોકે દેખીતી રીતે ભયાવહ લાગે છે, હાસ્કેલમાં હેન્ડલ કરવા માટે સરળ છે, હાસ્કેલના આળસુ મૂલ્યાંકન મોડેલને આભારી છે. આ લક્ષણ હાસ્કેલને અભિવ્યક્તિનું મૂલ્યાંકન કરવાની મંજૂરી આપે છે જ્યારે તેનું મૂલ્ય જરૂરી હોય, તેથી અનંત સૂચિઓ સાથે કાર્ય કરવાની કાર્યક્ષમ રીત પ્રદાન કરે છે.
અનંત યાદીઓ સાથે કોડિંગ
ચાલો અનંત સૂચિની વિભાવનાનો ઉપયોગ કરતા કેટલાક વ્યવહારુ હાસ્કેલ કોડ્સનો અભ્યાસ કરીએ. એક સામાન્ય સમસ્યા જેને આપણે અનંત યાદીઓ સાથે હલ કરી શકીએ છીએ તે તમામ અવિભાજ્ય સંખ્યાઓની સૂચિ બનાવી રહી છે.
નીચેનો કોડ આ સમસ્યાને સુંદર રીતે હલ કરે છે:
primes = filterPrime [2..] where filterPrime (p:xs) = p : filterPrime [x | x <- xs, x `mod` p /= 0] [/code] In this code, the function [code lang="Haskell"]filterPrime[/code] takes the first number from the list (which is a prime) and concatenates it with the result of filtering out the multiples of that prime number from the rest of the list. The function [code lang="Haskell"]filterPrime[/code] then recursively calls itself to generate all prime numbers. <b>With the above code, we not only solved our limitation but also illustrated the power and efficiency of Haskell's infinite lists.</b> <h2>Understanding the Libraries</h2> Haskell's standard library, GHC.Base, provides several functions that are crucial to the manipulation of infinite lists. These functions include [code lang="Haskell"]cycle
,
iterate
, અને
repeat
, બીજાઓ વચ્ચે.
દાખલા તરીકે,
repeat
ફંક્શન અનંત સૂચિ બનાવવાની એક સરળ રીત પ્રદાન કરે છે. દરમિયાન, ધ
cycle
ફંક્શન મર્યાદિત સૂચિ લે છે અને તેને અનંત રૂપે નકલ કરે છે.
iterate
, બીજી બાજુ, વધુ લવચીકતા આપે છે કારણ કે તે અમને ફંક્શનને વારંવાર લાગુ કરીને અનંત સૂચિ બનાવવાની મંજૂરી આપે છે.
આ પુસ્તકાલયો અને કાર્યોનો ઉપયોગ કેવી રીતે કરવો તે સમજવું એ હાસ્કેલમાં અનંત યાદીઓને નિપુણ બનાવવા માટે મૂળભૂત છે. આનો આભાર, અનંત યાદીઓ બનાવવી અને તેનું સંચાલન કરવું એ એવા કાર્યો બની જાય છે જેને આપણે સરળતા અને સુંદરતા સાથે ચલાવી શકીએ છીએ.