The program calculates the sum of two numbers.

ਇਹ ਪ੍ਰੋਗਰਾਮ ਦੋ ਨੰਬਰਾਂ ਦਾ ਜੋੜ ਕੱਢਦਾ ਹੈ।


ਕਿਰਪਾ ਕਰਕੇ ਆਪਣਾ ਨਾਮ ਅਤੇ ਪਤਾ ਦਰਜ ਕਰੋ।


ਅੱਜ ਮੌਸਮ ਬਹੁਤ ਸੁਹਾਵਣਾ ਹੈ।


He is going to the market to buy vegetables.

ਉਹ ਸਬਜ਼ੀਆਂ ਖਰੀਦਣ ਲਈ ਬਾਜ਼ਾਰ ਜਾ ਰਿਹਾ ਹੈ।


The company announced a new product launch.

ਕੰਪਨੀ ਨੇ ਇੱਕ ਨਵੇਂ ਉਤਪਾਦ ਦੀ ਸ਼ੁਰੂਆਤ ਦਾ ਐਲਾਨ ਕੀਤਾ।


The algorithm efficiently sorts the data.

ਐਲਗੋਰਿਦਮ ਡਾਟਾ ਨੂੰ ਕੁਸ਼ਲਤਾ ਨਾਲ ਛਾਂਟਦਾ ਹੈ।


She is studying for her exams diligently.

ਉਹ ਆਪਣੀ ਪ੍ਰੀਖਿਆਵਾਂ ਲਈ ਲਗਨ ਨਾਲ ਪੜ੍ਹ ਰਹੀ ਹੈ।


The government implemented new policies to boost the economy.

ਸਰਕਾਰ ਨੇ ਅਰਥਵਿਵਸਥਾ ਨੂੰ ਹੁਲਾਰਾ ਦੇਣ ਲਈ ਨਵੀਆਂ ਨੀਤੀਆਂ ਲਾਗੂ ਕੀਤੀਆਂ।


The complex system requires careful analysis.

ਗੁੰਝਲਦਾਰ ਸਿਸਟਮ ਨੂੰ ਧਿਆਨ ਨਾਲ ਵਿਸ਼ਲੇਸ਼ਣ ਦੀ ਲੋੜ ਹੈ।


Despite the challenges, they persevered and succeeded.

ਚੁਣੌਤੀਆਂ ਦੇ ਬਾਵਜੂਦ, ਉਨ੍ਹਾਂ ਨੇ ਲਗਾਤਾਰ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਅਤੇ ਸਫਲਤਾ ਪ੍ਰਾਪਤ ਕੀਤੀ।


The research paper explores the impact of climate change.

ਖੋਜ ਪੱਤਰ ਜਲਵਾਯੂ ਪਰਿਵਰਤਨ ਦੇ ਪ੍ਰਭਾਵ ਦੀ ਪੜਚੋਲ ਕਰਦਾ ਹੈ।


The philosophical debate centered on the nature of reality.

ਦਾਰਸ਼ਨਿਕ ਬਹਿਸ ਹਕੀਕਤ ਦੀ ਪ੍ਰਕਿਰਤੀ 'ਤੇ ਕੇਂਦਰਿਤ ਸੀ।


The intricate design of the software required extensive testing.

ਸੌਫਟਵੇਅਰ ਦੇ ਗੁੰਝਲਦਾਰ ਡਿਜ਼ਾਈਨ ਲਈ ਵਿਆਪਕ ਟੈਸਟਿੰਗ ਦੀ ਲੋੜ ਸੀ।


The economic downturn affected various sectors of the economy.

ਆਰਥਿਕ ਮੰਦੀ ਨੇ ਅਰਥਵਿਵਸਥਾ ਦੇ ਵੱਖ-ਵੱਖ ਖੇਤਰਾਂ ਨੂੰ ਪ੍ਰਭਾਵਿਤ ਕੀਤਾ।


The implications of the new regulations are far-reaching.

ਨਵੇਂ ਨਿਯਮਾਂ ਦੇ ਪ੍ਰਭਾਵ ਦੂਰ-ਦੂਰ ਤੱਕ ਫੈਲੇ ਹੋਏ ਹਨ।


The function uses recursion to solve the problem.

ਫੰਕਸ਼ਨ ਸਮੱਸਿਆ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਰਿਕਰਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ।


The algorithm's time complexity is O(n log n).

ਐਲਗੋਰਿਦਮ ਦੀ ਸਮਾਂ ਗੁੰਝਲਤਾ O(n log n) ਹੈ।


The company's strategic plan involves market diversification.

ਕੰਪਨੀ ਦੀ ਰਣਨੀਤਕ ਯੋਜਨਾ ਵਿੱਚ ਬਾਜ਼ਾਰ ਵਿਭਿੰਨਤਾ ਸ਼ਾਮਲ ਹੈ।


The judge's decision was based on legal precedent.

ਜੱਜ ਦਾ ਫੈਸਲਾ ਕਾਨੂੰਨੀ ਮਿਸਾਲ 'ਤੇ ਅਧਾਰਤ ਸੀ।


The intricate interplay of factors made the outcome unpredictable.

ਕਾਰਕਾਂ ਦੀ ਗੁੰਝਲਦਾਰ ਆਪਸੀ ਕਿਰਿਆ ਨੇ ਨਤੀਜੇ ਨੂੰ ਅਨੁਮਾਨ ਲਗਾਉਣਾ ਅਸੰਭਵ ਬਣਾ ਦਿੱਤਾ।


Tail recursion is often more efficient than general recursion.

ਪੂਛ ਰਿਕਰਸ਼ਨ ਅਕਸਰ ਆਮ ਰਿਕਰਸ਼ਨ ਨਾਲੋਂ ਵਧੇਰੇ ਕੁਸ਼ਲ ਹੁੰਦਾ ਹੈ।


Functional programming languages often favor tail recursive functions.

ਕਾਰਜਸ਼ੀਲ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਅਕਸਰ ਪੂਛ ਰਿਕਰਸਿਵ ਫੰਕਸ਼ਨਾਂ ਨੂੰ ਤਰਜੀਹ ਦਿੰਦੀਆਂ ਹਨ।


The marathon time was 2 hours, 1 minute, and 39 seconds.

ਮੈਰਾਥਨ ਦਾ ਸਮਾਂ 2 ਘੰਟੇ, 1 ਮਿੰਟ ਅਤੇ 39 ਸਕਿੰਟ ਸੀ।


Tuples are used to represent collections of values.

ਟਿਊਪਲਸ ਦੀ ਵਰਤੋਂ ਮੁੱਲਾਂ ਦੇ ਸੰਗ੍ਰਹਿ ਨੂੰ ਦਰਸਾਉਣ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।


Exceptions can be useful for debugging erroneous programs.

ਗਲਤੀ ਵਾਲੇ ਪ੍ਰੋਗਰਾਮਾਂ ਨੂੰ ਡੀਬੱਗ ਕਰਨ ਲਈ ਅਪਵਾਦ ਲਾਭਦਾਇਕ ਹੋ ਸਕਦੇ ਹਨ।


The median of three numbers is the middle number.

ਤਿੰਨ ਨੰਬਰਾਂ ਦਾ ਮੱਧਮਾਨ ਵਿਚਕਾਰਲਾ ਨੰਬਰ ਹੁੰਦਾ ਹੈ।


In OCaml, the operation 5/0 results in an exception.

OCaml ਵਿੱਚ, ਓਪਰੇਸ਼ਨ 5/0 ਇੱਕ ਅਪਵਾਦ ਵਿੱਚ ਨਤੀਜਾ ਦਿੰਦਾ ਹੈ।


We will discuss strings and exceptions in later chapters.

ਅਸੀਂ ਬਾਅਦ ਦੇ ਅਧਿਆਵਾਂ ਵਿੱਚ ਸਤਰਾਂ ਅਤੇ ਅਪਵਾਦਾਂ ਬਾਰੇ ਚਰਚਾ ਕਰਾਂਗੇ।


A good programmer adapts quickly to new languages.

ਇੱਕ ਚੰਗਾ ਪ੍ਰੋਗਰਾਮਰ ਨਵੀਆਂ ਭਾਸ਼ਾਵਾਂ ਦੇ ਅਨੁਕੂਲ ਜਲਦੀ ਢਲ ਜਾਂਦਾ ਹੈ।


The lexical syntax defines the characters used in a program.

ਲੈਕਸੀਕਲ ਸਿੰਟੈਕਸ ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਵਿੱਚ ਵਰਤੇ ਗਏ ਅੱਖਰਾਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ।


Identifiers start with a lowercase letter.

ਪਛਾਣਕਰਤਾ ਇੱਕ ਛੋਟੇ ਅੱਖਰ ਨਾਲ ਸ਼ੁਰੂ ਹੁੰਦੇ ਹਨ।


Comments are useful for programmer's remarks.

ਟਿੱਪਣੀਆਂ ਪ੍ਰੋਗਰਾਮਰ ਦੀਆਂ ਟਿੱਪਣੀਆਂ ਲਈ ਲਾਭਦਾਇਕ ਹਨ।


Phrasal syntax organizes phrases into syntactic classes.

ਵਾਕੰਸ਼ਕ ਸਿੰਟੈਕਸ ਵਾਕੰਸ਼ਾਂ ਨੂੰ ਸਿੰਟੈਕਟਿਕ ਸ਼੍ਰੇਣੀਆਂ ਵਿੱਚ ਸੰਗਠਿਤ ਕਰਦਾ ਹੈ।


Function types and tuple types are compound types.

ਫੰਕਸ਼ਨ ਕਿਸਮਾਂ ਅਤੇ ਟਿਊਪਲ ਕਿਸਮਾਂ ਮਿਸ਼ਰਿਤ ਕਿਸਮਾਂ ਹਨ।


The grammar defines syntactic classes using rules.

ਵਿਆਕਰਣ ਨਿਯਮਾਂ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸਿੰਟੈਕਟਿਕ ਸ਼੍ਰੇਣੀਆਂ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ।


Every phrase has a unique syntax tree representation.

ਹਰੇਕ ਵਾਕੰਸ਼ ਦਾ ਇੱਕ ਵਿਲੱਖਣ ਸਿੰਟੈਕਸ ਟ੍ਰੀ ਪ੍ਰਸਤੁਤੀਕਰਨ ਹੁੰਦਾ ਹੈ।


Parentheses can be omitted in lexical representations.

ਲੈਕਸੀਕਲ ਪ੍ਰਸਤੁਤੀਕਰਨ ਵਿੱਚ ਬਰੈਕਟਾਂ ਨੂੰ ਛੱਡਿਆ ਜਾ ਸਕਦਾ ਹੈ।


Function applications group to the left.

ਫੰਕਸ਼ਨ ਐਪਲੀਕੇਸ਼ਨ ਖੱਬੇ ਪਾਸੇ ਸਮੂਹ ਕਰਦੇ ਹਨ।


Derivation systems describe the semantic layers.

ਡੈਰੀਵੇਸ਼ਨ ਸਿਸਟਮ ਸਿਮੈਂਟਿਕ ਪਰਤਾਂ ਦਾ ਵਰਣਨ ਕਰਦੇ ਹਨ।


A program is processed through four layers.

ਇੱਕ ਪ੍ਰੋਗਰਾਮ ਨੂੰ ਚਾਰ ਪਰਤਾਂ ਰਾਹੀਂ ਪ੍ਰੋਸੈਸ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।


The derivation system was chosen for explanation.

ਇਸ ਵਿਧੀ ਨੂੰ ਸਮਝਾਉਣ ਲਈ ਚੁਣਿਆ ਗਿਆ ਸੀ।


In practice, derivation systems are used for describing computational relations.

ਅਮਲ ਵਿੱਚ, ਗਣਨਾਤਮਕ ਸਬੰਧਾਂ ਦਾ ਵਰਣਨ ਕਰਨ ਲਈ ਵਿਧੀ ਪ੍ਰਣਾਲੀਆਂ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।


Typing and evaluation of expressions are examples for such relations.

ਪ੍ਰਗਟਾਵੇ ਦੀ ਟਾਈਪਿੰਗ ਅਤੇ ਮੁਲਾਂਕਣ ਅਜਿਹੇ ਸਬੰਧਾਂ ਦੀਆਂ ਉਦਾਹਰਣਾਂ ਹਨ।


We are going to use derivation systems for this purpose.

ਅਸੀਂ ਇਸ ਉਦੇਸ਼ ਲਈ ਵਿਧੀ ਪ੍ਰਣਾਲੀਆਂ ਦੀ ਵਰਤੋਂ ਕਰਨ ਜਾ ਰਹੇ ਹਾਂ।


5 < 9 ਲਈ ਸਾਰੇ ਵਿਉਤਪਾਦਨ ਦਿਓ।


Give two inference rules for judgments x < y.

ਨਿਰਣੇ x < y ਲਈ ਦੋ ਅਨੁਮਾਨ ਨਿਯਮ ਦਿਓ।


The semantic layers of a language see the phrases of the language as abstract syntactic objects.

ਇੱਕ ਭਾਸ਼ਾ ਦੀਆਂ ਸਿਮੈਂਟਿਕ ਪਰਤਾਂ ਭਾਸ਼ਾ ਦੇ ਵਾਕਾਂਸ਼ਾਂ ਨੂੰ ਅਮੂਰਤ ਸੰਟੈਕਟਿਕ ਵਸਤੂਆਂ ਵਜੋਂ ਦੇਖਦੀਆਂ ਹਨ।


This brings us back to the philosophy of Chapter 1.

ਇਹ ਸਾਨੂੰ ਅਧਿਆਇ 1 ਦੇ ਫ਼ਲਸਫ਼ੇ 'ਤੇ ਵਾਪਸ ਲਿਆਉਂਦਾ ਹੈ।


We explained OCaml with abstract syntactic notions.

ਅਸੀਂ ਅਮੂਰਤ ਸੰਟੈਕਟਿਕ ਸੰਕਲਪਾਂ ਨਾਲ OCaml ਦੀ ਵਿਆਖਿਆ ਕੀਤੀ।


For the discussion of the semantic layers, we switch to a language of abstract expressions.

ਸਿਮੈਂਟਿਕ ਪਰਤਾਂ ਦੀ ਚਰਚਾ ਲਈ, ਅਸੀਂ ਅਮੂਰਤ ਪ੍ਰਗਟਾਵੇ ਦੀ ਇੱਕ ਭਾਸ਼ਾ 'ਤੇ ਸਵਿੱਚ ਕਰਦੇ ਹਾਂ।


The new language has types as considered before.

ਨਵੀਂ ਭਾਸ਼ਾ ਵਿੱਚ ਪਹਿਲਾਂ ਵਿਚਾਰੇ ਗਏ ਪ੍ਰਕਾਰ ਹਨ।


Constants are values of the types int, bool, and string.

ਸਥਿਰ int, bool, ਅਤੇ string ਕਿਸਮਾਂ ਦੇ ਮੁੱਲ ਹਨ।


For simplicity, we just have binary operator applications.

ਸੌਖ ਲਈ, ਸਾਡੇ ਕੋਲ ਸਿਰਫ਼ ਦੋ-ਅੰਕੀ ਓਪਰੇਟਰ ਐਪਲੀਕੇਸ਼ਨ ਹਨ।


The variables introduced by lambda expressions are called local variables.

ਲੈਂਡਾ ਸਮੀਕਰਨਾਂ ਦੁਆਰਾ ਪੇਸ਼ ਕੀਤੇ ਗਏ ਵੇਰੀਏਬਲ ਨੂੰ ਸਥਾਨਕ ਵੇਰੀਏਬਲ ਕਿਹਾ ਜਾਂਦਾ ਹੈ।


It is possible to translate concrete expressions into equivalent abstract expressions.

ਠੋਸ ਸਮੀਕਰਨਾਂ ਨੂੰ ਬਰਾਬਰ ਅਮੂਰਤ ਸਮੀਕਰਨਾਂ ਵਿੱਚ ਅਨੁਵਾਦ ਕਰਨਾ ਸੰਭਵ ਹੈ।


We formulate the static semantics of abstract expressions using typing judgments.

ਅਸੀਂ ਟਾਈਪਿੰਗ ਨਿਰਣੇ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਅਮੂਰਤ ਸਮੀਕਰਨਾਂ ਦੇ ਸਥਿਰ ਅਰਥ ਵਿਗਿਆਨ ਨੂੰ ਤਿਆਰ ਕਰਦੇ ਹਾਂ।


An environment is a finite collection of bindings.

ਇੱਕ ਵਾਤਾਵਰਣ ਬਾਈਡਿੰਗਾਂ ਦਾ ਇੱਕ ਸੀਮਤ ਸੰਗ੍ਰਹਿ ਹੈ।


Here is an example for a typing judgment.

ਇੱਥੇ ਇੱਕ ਟਾਈਪਿੰਗ ਨਿਰਣੇ ਦੀ ਇੱਕ ਉਦਾਹਰਣ ਹੈ।


The inference rules establish a derivation system for typing judgments.

ਅਨੁਮਾਨ ਨਿਯਮ ਟਾਈਪਿੰਗ ਨਿਰਣੇ ਲਈ ਇੱਕ ਵਿਉਤਪਾਦਨ ਪ੍ਰਣਾਲੀ ਸਥਾਪਤ ਕਰਦੇ ਹਨ।


If the judgment E ` e : t is derivable, we say that expression e has type t in environment E.

ਜੇਕਰ ਨਿਰਣੇ E ` e : t ਨੂੰ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਤਾਂ ਅਸੀਂ ਕਹਿੰਦੇ ਹਾਂ ਕਿ ਸਮੀਕਰਨ e ਦਾ ਵਾਤਾਵਰਣ E ਵਿੱਚ ਟਾਈਪ t ਹੈ।


Every programming language provides machine integers for efficiency.

ਹਰ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਕੁਸ਼ਲਤਾ ਲਈ ਮਸ਼ੀਨੀ ਇੰਟੀਜਰ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ।


There are techniques for realizing much larger intervals of integers based on machine integers in programming languages.

ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾਵਾਂ ਵਿੱਚ ਮਸ਼ੀਨੀ ਇੰਟੀਜਰਾਂ 'ਤੇ ਅਧਾਰਤ ਇੰਟੀਜਰਾਂ ਦੇ ਬਹੁਤ ਵੱਡੇ ਅੰਤਰਾਲਾਂ ਨੂੰ ਮਹਿਸੂਸ ਕਰਨ ਦੀਆਂ ਤਕਨੀਕਾਂ ਹਨ।


Things become interesting once we declare functions.

ਜਦੋਂ ਅਸੀਂ ਫੰਕਸ਼ਨਾਂ ਦਾ ਐਲਾਨ ਕਰਦੇ ਹਾਂ ਤਾਂ ਚੀਜ਼ਾਂ ਦਿਲਚਸਪ ਹੋ ਜਾਂਦੀਆਂ ਹਨ।


The declaration `let square x = x * x` declares a function `square:int→int` squaring its argument.

ਐਲਾਨ `let square x = x * x` ਇੱਕ ਫੰਕਸ਼ਨ `square:int→int` ਦਾ ਐਲਾਨ ਕਰਦਾ ਹੈ ਜੋ ਇਸਦੇ ਆਰਗੂਮੈਂਟ ਨੂੰ ਵਰਗ ਕਰਦਾ ਹੈ।


Given the declaration of `square`, execution of the declaration `let a = square 5` binds the identifier `a` to the integer 25.

`square` ਦੇ ਐਲਾਨ ਨੂੰ ਦੇਖਦੇ ਹੋਏ, ਐਲਾਨ `let a = square 5` ਦਾ ਐਗਜ਼ੀਕਿਊਸ਼ਨ ਪਛਾਣਕਰਤਾ `a` ਨੂੰ ਇੰਟੀਜਰ 25 ਨਾਲ ਜੋੜਦਾ ਹੈ।


Can we compute a power x^8 with just three multiplications?

ਕੀ ਅਸੀਂ ਸਿਰਫ਼ ਤਿੰਨ ਗੁਣਾ ਨਾਲ x^8 ਦੀ ਪਾਵਰ ਦੀ ਗਣਨਾ ਕਰ ਸਕਦੇ ਹਾਂ?


Easy, we just square the integer x three times.

ਆਸਾਨ, ਅਸੀਂ ਸਿਰਫ਼ ਇੰਟੀਜਰ x ਨੂੰ ਤਿੰਨ ਵਾਰ ਵਰਗ ਕਰਦੇ ਹਾਂ।


Another possibility is the declaration `let pow8' x = let a = x * x in let b = a * a in b * b`.

ਇੱਕ ਹੋਰ ਸੰਭਾਵਨਾ ਹੈ ਐਲਾਨ `let pow8' x = let a = x * x in let b = a * a in b * b`।


Local declarations are obtained with `let` expressions `let d in e` combining a declaration `d` with an expression `e` using the keywords `let` and `in`.

ਸਥਾਨਕ ਘੋਸ਼ਣਾਵਾਂ `let` ਸਮੀਕਰਨਾਂ `let d in e` ਨਾਲ ਪ੍ਰਾਪਤ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ ਜੋ ਇੱਕ ਘੋਸ਼ਣਾ `d` ਨੂੰ ਇੱਕ ਸਮੀਕਰਨ `e` ਨਾਲ ਜੋੜਦੀਆਂ ਹਨ, `let` ਅਤੇ `in` ਕੀਵਰਡਸ ਦੀ ਵਰਤੋਂ ਕਰਦੀਆਂ ਹਨ।


The declaration `let abs x = if x < 0 then -x else x` declares a function `abs:int→int` returning the absolute value of an integer.

ਐਲਾਨ `let abs x = if x < 0 then -x else x` ਇੱਕ ਫੰਕਸ਼ਨ `abs:int→int` ਦਾ ਐਲਾਨ ਕਰਦਾ ਹੈ ਜੋ ਇੱਕ ਇੰਟੀਜਰ ਦਾ ਪੂਰਨ ਮੁੱਲ ਵਾਪਸ ਕਰਦਾ ਹੈ।


The declaration `let max x y :int = if x <= y then y else x` declares a function `max:int→int→int` computing the maximum of two numbers.

ਐਲਾਨ `let max x y :int = if x <= y then y else x` ਇੱਕ ਫੰਕਸ਼ਨ `max:int→int→int` ਦਾ ਐਲਾਨ ਕਰਦਾ ਹੈ ਜੋ ਦੋ ਨੰਬਰਾਂ ਦਾ ਵੱਧ ਤੋਂ ਵੱਧ ਹਿਸਾਬ ਲਗਾਉਂਦਾ ਹੈ।


This is the first function we see taking two arguments.

ਇਹ ਪਹਿਲਾ ਫੰਕਸ਼ਨ ਹੈ ਜੋ ਅਸੀਂ ਦੋ ਆਰਗੂਮੈਂਟ ਲੈਂਦੇ ਦੇਖਦੇ ਹਾਂ।


There is an explicit return type specification in the declaration (appearing as “ :int”), which is needed so that `max` receives the correct type.

ਐਲਾਨ ਵਿੱਚ ਇੱਕ ਸਪੱਸ਼ਟ ਰਿਟਰਨ ਟਾਈਪ ਨਿਰਧਾਰਨ ਹੈ (ਜੋ “ :int” ਦੇ ਰੂਪ ਵਿੱਚ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ), ਜੋ ਕਿ ਜ਼ਰੂਰੀ ਹੈ ਤਾਂ ਜੋ `max` ਸਹੀ ਟਾਈਪ ਪ੍ਰਾਪਤ ਕਰੇ।


Given `max`, we can declare a function `let max3 x y z = max (max x y) z` returning the maximum of three numbers.

`max` ਨੂੰ ਦੇਖਦੇ ਹੋਏ, ਅਸੀਂ ਇੱਕ ਫੰਕਸ਼ਨ `let max3 x y z = max (max x y) z` ਦਾ ਐਲਾਨ ਕਰ ਸਕਦੇ ਹਾਂ ਜੋ ਤਿੰਨ ਨੰਬਰਾਂ ਦਾ ਵੱਧ ਤੋਂ ਵੱਧ ਵਾਪਸ ਕਰਦਾ ਹੈ।


This time no return type specification is needed since `max` forces the correct type `max3:int→int→int→int`.

ਇਸ ਵਾਰ ਕੋਈ ਰਿਟਰਨ ਟਾਈਪ ਨਿਰਧਾਰਨ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ ਕਿਉਂਕਿ `max` ਸਹੀ ਟਾਈਪ `max3:int→int→int→int` ਨੂੰ ਮਜਬੂਰ ਕਰਦਾ ਹੈ।


There is a type `bool` having two values `true` and `false` called booleans.

ਇੱਕ ਟਾਈਪ `bool` ਹੈ ਜਿਸਦੇ ਦੋ ਮੁੱਲ `true` ਅਤੇ `false` ਹਨ ਜਿਸਨੂੰ ਬੂਲੀਅਨ ਕਿਹਾ ਜਾਂਦਾ ਹੈ।


The comparison operator “≤” used for `max` (written “<=” in OCaml) is used with the functional type `int→int→bool` saying that an expression `e1 ≤ e2` where both subexpressions `e1` and `e2` have type `int` has type `bool`.

`max` ਲਈ ਵਰਤਿਆ ਗਿਆ ਤੁਲਨਾ ਆਪਰੇਟਰ “≤” (OCaml ਵਿੱਚ “<=” ਲਿਖਿਆ ਗਿਆ) ਫੰਕਸ਼ਨਲ ਟਾਈਪ `int→int→bool` ਨਾਲ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ, ਇਹ ਕਹਿੰਦੇ ਹੋਏ ਕਿ ਇੱਕ ਸਮੀਕਰਨ `e1 ≤ e2` ਜਿੱਥੇ ਦੋਵੇਂ ਸਬਐਕਸਪ੍ਰੈਸ਼ਨ `e1` ਅਤੇ `e2` ਦੀ ਟਾਈਪ `int` ਹੈ, ਦੀ ਟਾਈਪ `bool` ਹੈ।


The declaration `let test (x :int) y z = if x <= y then y <= z else false` declares a function `test:int→int→int→bool` testing whether its three arguments appear in order.

ਐਲਾਨ `let test (x :int) y z = if x <= y then y <= z else false` ਇੱਕ ਫੰਕਸ਼ਨ `test:int→int→int→bool` ਦਾ ਐਲਾਨ ਕਰਦਾ ਹੈ ਜੋ ਇਹ ਜਾਂਚਦਾ ਹੈ ਕਿ ਕੀ ਇਸਦੇ ਤਿੰਨ ਆਰਗੂਮੈਂਟ ਕ੍ਰਮ ਵਿੱਚ ਦਿਖਾਈ ਦਿੰਦੇ ਹਨ।


We recall that powers satisfy the equations x^0 = 1 and x^(n+1) = x * x^n.

ਅਸੀਂ ਯਾਦ ਕਰਦੇ ਹਾਂ ਕਿ ਪਾਵਰ ਸਮੀਕਰਨਾਂ x^0 = 1 ਅਤੇ x^(n+1) = x * x^n ਨੂੰ ਸੰਤੁਸ਼ਟ ਕਰਦੀਆਂ ਹਨ।


We now declare a recursive function implementing this equation: `let rec pow x n = if n < 1 then 1 else x * pow x (n - 1)`.

ਅਸੀਂ ਹੁਣ ਇਸ ਸਮੀਕਰਨ ਨੂੰ ਲਾਗੂ ਕਰਨ ਵਾਲਾ ਇੱਕ ਰਿਕਰਸਿਵ ਫੰਕਸ਼ਨ ਦਾ ਐਲਾਨ ਕਰਦੇ ਹਾਂ: `let rec pow x n = if n < 1 then 1 else x * pow x (n - 1)`।


When we program, expressions are written as sequences of characters.

ਜਦੋਂ ਅਸੀਂ ਪ੍ਰੋਗਰਾਮ ਬਣਾਉਂਦੇ ਹਾਂ, ਤਾਂ ਸਮੀਕਰਨਾਂ ਨੂੰ ਅੱਖਰਾਂ ਦੇ ਲੜੀਵਾਰਾਂ ਵਜੋਂ ਲਿਖਿਆ ਜਾਂਦਾ ਹੈ।


The rules for the conversion of character sequences into abstract expressions are fixed by the concrete syntax of a language.

ਅੱਖਰਾਂ ਦੇ ਲੜੀਵਾਰਾਂ ਨੂੰ ਅਮੂਰਤ ਸਮੀਕਰਨਾਂ ਵਿੱਚ ਬਦਲਣ ਦੇ ਨਿਯਮ ਇੱਕ ਭਾਸ਼ਾ ਦੇ ਠੋਸ ਸੰਟੈਕਸ ਦੁਆਰਾ ਨਿਸ਼ਚਿਤ ਕੀਤੇ ਜਾਂਦੇ ਹਨ।


In the lexical representation of an expression, subexpressions can be indicated with parentheses.

ਇੱਕ ਸਮੀਕਰਨ ਦੇ ਸ਼ਬਦਕੋਸ਼ ਪ੍ਰਸਤੁਤੀਕਰਨ ਵਿੱਚ, ਉਪ-ਸਮੀਕਰਨਾਂ ਨੂੰ ਬਰੈਕਟਾਂ ਨਾਲ ਦਰਸਾਇਆ ਜਾ ਸਕਦਾ ਹੈ।


To reduce the number of parentheses needed for the textual representation of expressions, the concrete syntax of a language fixes operator precedences and grouping rules.

ਸਮੀਕਰਨਾਂ ਦੀ ਟੈਕਸਟ ਪ੍ਰਸਤੁਤੀ ਲਈ ਲੋੜੀਂਦੀਆਂ ਬਰੈਕਟਾਂ ਦੀ ਗਿਣਤੀ ਨੂੰ ਘਟਾਉਣ ਲਈ, ਇੱਕ ਭਾਸ਼ਾ ਦਾ ਠੋਸ ਸੰਟੈਕਸ ਓਪਰੇਟਰ ਦੀ ਤਰਜੀਹ ਅਤੇ ਸਮੂਹ ਨਿਯਮਾਂ ਨੂੰ ਨਿਸ਼ਚਿਤ ਕਰਦਾ ਹੈ।


Given the abstract syntax of a language, we can define the static semantics and the dynamic semantics of the language.

ਇੱਕ ਭਾਸ਼ਾ ਦੇ ਅਮੂਰਤ ਸੰਟੈਕਸ ਨੂੰ ਦੇਖਦੇ ਹੋਏ, ਅਸੀਂ ਭਾਸ਼ਾ ਦੇ ਸਥਿਰ ਅਰਥ ਵਿਗਿਆਨ ਅਤੇ ਗਤੀਸ਼ੀਲ ਅਰਥ ਵਿਗਿਆਨ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰ ਸਕਦੇ ਹਾਂ।


The dynamic semantics is concerned with the evaluation of expressions and does not make use of types.

ਗਤੀਸ਼ੀਲ ਅਰਥ ਵਿਗਿਆਨ ਸਮੀਕਰਨਾਂ ਦੇ ਮੁਲਾਂਕਣ ਨਾਲ ਸਬੰਧਤ ਹੈ ਅਤੇ ਕਿਸਮਾਂ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰਦਾ ਹੈ।


The static semantics defines a type discipline such that the evaluation of well-typed expressions doesn’t lead to obviously erroneous situations.

ਸਥਿਰ ਅਰਥ ਵਿਗਿਆਨ ਇੱਕ ਕਿਸਮ ਦਾ ਅਨੁਸ਼ਾਸਨ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ ਜਿਸ ਨਾਲ ਚੰਗੀ ਤਰ੍ਹਾਂ ਟਾਈਪ ਕੀਤੇ ਸਮੀਕਰਨਾਂ ਦਾ ਮੁਲਾਂਕਣ ਸਪੱਸ਼ਟ ਤੌਰ 'ਤੇ ਗਲਤ ਸਥਿਤੀਆਂ ਵੱਲ ਨਹੀਂ ਜਾਂਦਾ।


Both semantics employ environments mapping free variables to either types or values.

ਦੋਵੇਂ ਅਰਥ ਵਿਗਿਆਨ ਵਾਤਾਵਰਣ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਨ ਜੋ ਮੁਫਤ ਵੇਰੀਏਬਲ ਨੂੰ ਕਿਸਮਾਂ ਜਾਂ ਮੁੱਲਾਂ ਨਾਲ ਮੈਪ ਕਰਦੇ ਹਨ।


The dynamic semantics represents functional values as so-called closures combining the syntactic description of a function with a value environment providing values for the free variables.

ਗਤੀਸ਼ੀਲ ਅਰਥ ਵਿਗਿਆਨ ਕਾਰਜਸ਼ੀਲ ਮੁੱਲਾਂ ਨੂੰ ਅਖੌਤੀ ਕਲੋਜ਼ਰ ਵਜੋਂ ਦਰਸਾਉਂਦਾ ਹੈ ਜੋ ਇੱਕ ਫੰਕਸ਼ਨ ਦੇ ਸੰਟੈਕਟਿਕ ਵਰਣਨ ਨੂੰ ਇੱਕ ਮੁੱਲ ਵਾਤਾਵਰਣ ਨਾਲ ਜੋੜਦਾ ਹੈ ਜੋ ਮੁਫਤ ਵੇਰੀਏਬਲ ਲਈ ਮੁੱਲ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।


We speak of typing judgments and typing rules for the static semantics, and of evaluation judgments and evaluation rules for the dynamic semantics.

ਅਸੀਂ ਸਥਿਰ ਅਰਥ ਵਿਗਿਆਨ ਲਈ ਟਾਈਪਿੰਗ ਫੈਸਲਿਆਂ ਅਤੇ ਟਾਈਪਿੰਗ ਨਿਯਮਾਂ, ਅਤੇ ਗਤੀਸ਼ੀਲ ਅਰਥ ਵਿਗਿਆਨ ਲਈ ਮੁਲਾਂਕਣ ਫੈਸਲਿਆਂ ਅਤੇ ਮੁਲਾਂਕਣ ਨਿਯਮਾਂ ਦੀ ਗੱਲ ਕਰਦੇ ਹਾਂ।


The algorithmic reading of the inference rules gives us abstract algorithms that given an expression and an environment compute either the type or the value of the expression provided it exists.

ਇਨਫਰੈਂਸ ਨਿਯਮਾਂ ਦੀ ਐਲਗੋਰਿਦਮਿਕ ਰੀਡਿੰਗ ਸਾਨੂੰ ਅਮੂਰਤ ਐਲਗੋਰਿਦਮ ਦਿੰਦੀ ਹੈ ਜੋ ਇੱਕ ਸਮੀਕਰਨ ਅਤੇ ਇੱਕ ਵਾਤਾਵਰਣ ਨੂੰ ਦਿੱਤੇ ਜਾਣ 'ਤੇ ਸਮੀਕਰਨ ਦੀ ਕਿਸਮ ਜਾਂ ਮੁੱਲ ਦੀ ਗਣਨਾ ਕਰਦੇ ਹਨ, ਬਸ਼ਰਤੇ ਇਹ ਮੌਜੂਦ ਹੋਵੇ।


The type checking algorithm given by the typing rules needs to guess the types of the argument variables of lambda expressions.

ਟਾਈਪਿੰਗ ਨਿਯਮਾਂ ਦੁਆਰਾ ਦਿੱਤਾ ਗਿਆ ਟਾਈਪ ਚੈਕਿੰਗ ਐਲਗੋਰਿਦਮ ਨੂੰ ਲੈਂਡਾ ਸਮੀਕਰਨਾਂ ਦੇ ਆਰਗੂਮੈਂਟ ਵੇਰੀਏਬਲ ਦੀਆਂ ਕਿਸਮਾਂ ਦਾ ਅਨੁਮਾਨ ਲਗਾਉਣ ਦੀ ਲੋੜ ਹੈ।


A good way to think about type checking sees type checking as abstract evaluation of an expression.

ਟਾਈਪ ਚੈਕਿੰਗ ਬਾਰੇ ਸੋਚਣ ਦਾ ਇੱਕ ਵਧੀਆ ਤਰੀਕਾ ਹੈ ਟਾਈਪ ਚੈਕਿੰਗ ਨੂੰ ਇੱਕ ਸਮੀਕਰਨ ਦੇ ਅਮੂਰਤ ਮੁਲਾਂਕਣ ਵਜੋਂ ਦੇਖਣਾ।


While evaluation computes values, type checking computes types.

ਜਦੋਂ ਕਿ ਮੁਲਾਂਕਣ ਮੁੱਲਾਂ ਦੀ ਗਣਨਾ ਕਰਦਾ ਹੈ, ਟਾਈਪ ਚੈਕਿੰਗ ਕਿਸਮਾਂ ਦੀ ਗਣਨਾ ਕਰਦਾ ਹੈ।


There is the connection that an expression of a type evaluate to a value of type t (so-called type safety).

ਇਹ ਸੰਬੰਧ ਹੈ ਕਿ ਇੱਕ ਕਿਸਮ ਦਾ ਸਮੀਕਰਨ ਕਿਸਮ t ਦੇ ਮੁੱਲ ਦਾ ਮੁਲਾਂਕਣ ਕਰਦਾ ਹੈ (ਅਖੌਤੀ ਕਿਸਮ ਦੀ ਸੁਰੱਖਿਆ)।


The type checking algorithm given by the typing rules always terminates.

ਟਾਈਪਿੰਗ ਨਿਯਮਾਂ ਦੁਆਰਾ ਦਿੱਤਾ ਗਿਆ ਟਾਈਪ ਚੈਕਿੰਗ ਐਲਗੋਰਿਦਮ ਹਮੇਸ਼ਾ ਸਮਾਪਤ ਹੁੰਦਾ ਹੈ।


In later chapters we will implement in OCaml a type checker and an evaluator for the language considered here following the algorithmic reading of the typing and evaluation rules.

ਬਾਅਦ ਦੇ ਅਧਿਆਵਾਂ ਵਿੱਚ ਅਸੀਂ ਇੱਥੇ ਵਿਚਾਰੀ ਗਈ ਭਾਸ਼ਾ ਲਈ ਟਾਈਪ ਚੈਕਰ ਅਤੇ ਇੱਕ ਮੁਲਾਂਕਣਕਰਤਾ ਨੂੰ OCaml ਵਿੱਚ ਲਾਗੂ ਕਰਾਂਗੇ, ਟਾਈਪਿੰਗ ਅਤੇ ਮੁਲਾਂਕਣ ਨਿਯਮਾਂ ਦੀ ਐਲਗੋਰਿਦਮਿਕ ਰੀਡਿੰਗ ਦੀ ਪਾਲਣਾ ਕਰਦੇ ਹੋਏ।


One speaks of static typing to emphasize the fact that evaluation does not rely on type information.

ਇਸ ਤੱਥ 'ਤੇ ਜ਼ੋਰ ਦੇਣ ਲਈ ਕਿ ਮੁਲਾਂਕਣ ਕਿਸਮ ਦੀ ਜਾਣਕਾਰੀ 'ਤੇ ਨਿਰਭਰ ਨਹੀਂ ਕਰਦਾ, ਕੋਈ ਸਥਿਰ ਟਾਈਪਿੰਗ ਦੀ ਗੱਲ ਕਰਦਾ ਹੈ।


Types give us an organizing principle for the language constructs.

ਕਿਸਮਾਂ ਸਾਨੂੰ ਭਾਸ਼ਾ ਦੇ ਨਿਰਮਾਣ ਲਈ ਇੱਕ ਸੰਗਠਨ ਸਿਧਾਂਤ ਦਿੰਦੀਆਂ ਹਨ।


So far, some functions don’t have unique types, as for instance the projection functions for pairs.

ਹੁਣ ਤੱਕ, ਕੁਝ ਫੰਕਸ਼ਨਾਂ ਦੀਆਂ ਵਿਲੱਖਣ ਕਿਸਮਾਂ ਨਹੀਂ ਹਨ, ਜਿਵੇਂ ਕਿ ਜੋੜਿਆਂ ਲਈ ਪ੍ਰੋਜੈਕਸ਼ਨ ਫੰਕਸ਼ਨ।


The program will calculate the sum of two numbers.

ਪ੍ਰੋਗਰਾਮ ਦੋ ਅੰਕਾਂ ਦਾ ਜੋੜ ਕੱਢੇਗਾ।


Please provide the necessary input for the function.

ਕਿਰਪਾ ਕਰਕੇ ਫੰਕਸ਼ਨ ਲਈ ਜ਼ਰੂਰੀ ਇਨਪੁਟ ਪ੍ਰਦਾਨ ਕਰੋ।


The compiler detected an error in the code.

ਕੰਪਾਈਲਰ ਨੇ ਕੋਡ ਵਿੱਚ ਇੱਕ ਗਲਤੀ ਲੱਭੀ।


This algorithm is used for sorting data efficiently.

ਇਹ ਐਲਗੋਰਿਦਮ ਡਾਟਾ ਨੂੰ ਕੁਸ਼ਲਤਾ ਨਾਲ ਛਾਂਟਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।


The software update will be installed automatically.

ਸੌਫਟਵੇਅਰ ਅਪਡੇਟ ਆਪਣੇ ਆਪ ਇੰਸਟਾਲ ਹੋ ਜਾਵੇਗਾ।


The company announced a new product launch.

ਕੰਪਨੀ ਨੇ ਇੱਕ ਨਵੇਂ ਉਤਪਾਦ ਦੀ ਸ਼ੁਰੂਆਤ ਦਾ ਐਲਾਨ ਕੀਤਾ।


The economy is facing several challenges this year.

ਇਸ ਸਾਲ ਅਰਥ ਵਿਵਸਥਾ ਕਈ ਚੁਣੌਤੀਆਂ ਦਾ ਸਾਹਮਣਾ ਕਰ ਰਹੀ ਹੈ।


The government is working on new policies.

ਸਰਕਾਰ ਨਵੀਂਆਂ ਨੀਤੀਆਂ 'ਤੇ ਕੰਮ ਕਰ ਰਹੀ ਹੈ।


The election results were announced yesterday.

ਚੋਣਾਂ ਦੇ ਨਤੀਜੇ ਕੱਲ੍ਹ ਐਲਾਨੇ ਗਏ ਸਨ।


The weather forecast predicts rain for tomorrow.

ਮੌਸਮ ਵਿਭਾਗ ਨੇ ਕੱਲ੍ਹ ਮੀਂਹ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕੀਤੀ ਹੈ।


ਸਤਿ ਸ੍ਰੀ ਅਕਾਲ, ਅੱਜ ਤੁਹਾਡਾ ਕੀ ਹਾਲ ਹੈ?


ਮੈਨੂੰ ਤੁਹਾਨੂੰ ਮਿਲ ਕੇ ਬਹੁਤ ਖੁਸ਼ੀ ਹੋਈ।


ਤੁਹਾਡਾ ਮਨਪਸੰਦ ਸ਼ੌਕ ਕੀ ਹੈ?


ਕੀ ਤੁਸੀਂ ਇਸ ਕੰਮ ਵਿੱਚ ਮੇਰੀ ਮਦਦ ਕਰ ਸਕਦੇ ਹੋ?


I need to go to the market to buy groceries.

ਮੈਨੂੰ ਕਰਿਆਨੇ ਦਾ ਸਮਾਨ ਖਰੀਦਣ ਲਈ ਬਾਜ਼ਾਰ ਜਾਣਾ ਪਏਗਾ।


The research paper explores the impact of climate change.

ਖੋਜ ਪੱਤਰ ਜਲਵਾਯੂ ਪਰਿਵਰਤਨ ਦੇ ਪ੍ਰਭਾਵ ਦੀ ਪੜਚੋਲ ਕਰਦਾ ਹੈ।


The study uses advanced statistical methods.

ਅਧਿਐਨ ਵਿੱਚ ਉੱਨਤ ਅੰਕੜਾ ਵਿਧੀਆਂ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਗਈ ਹੈ।


The findings of the experiment were significant.

ਪ੍ਰਯੋਗ ਦੇ ਨਤੀਜੇ ਮਹੱਤਵਪੂਰਨ ਸਨ।


The theoretical framework provides a basis for analysis.

ਸਿਧਾਂਤਕ ਢਾਂਚਾ ਵਿਸ਼ਲੇਸ਼ਣ ਲਈ ਇੱਕ ਅਧਾਰ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।


Further investigation is required to confirm the results.

ਨਤੀਜਿਆਂ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਅਗਲੇਰੀ ਜਾਂਚ ਦੀ ਲੋੜ ਹੈ।


The list [1, 2, 3] may be depicted as a tree.

ਸੂਚੀ [1, 2, 3] ਨੂੰ ਇੱਕ ਰੁੱਖ ਵਜੋਂ ਦਰਸਾਇਆ ਜਾ ਸਕਦਾ ਹੈ।


Every list is obtained with either the constructor nil or the constructor cons.

ਹਰ ਸੂਚੀ ਜਾਂ ਤਾਂ ਨਿਰਮਾਤਾ ਨੀਲ ਜਾਂ ਨਿਰਮਾਤਾ ਕੰਸ ਨਾਲ ਪ੍ਰਾਪਤ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।


We call the values x1, ..., xn the elements or the members of the list.

ਅਸੀਂ ਮੁੱਲ x1, ..., xn ਨੂੰ ਸੂਚੀ ਦੇ ਤੱਤ ਜਾਂ ਮੈਂਬਰ ਕਹਿੰਦੇ ਹਾਂ।


A list type L(t) admits lists [x1, ..., xn] of any length but fixes a single type t for all elements.

ਇੱਕ ਸੂਚੀ ਕਿਸਮ L(t) ਕਿਸੇ ਵੀ ਲੰਬਾਈ ਦੀਆਂ ਸੂਚੀਆਂ [x1, ..., xn] ਨੂੰ ਸਵੀਕਾਰ ਕਰਦੀ ਹੈ ਪਰ ਸਾਰੇ ਤੱਤਾਂ ਲਈ ਇੱਕ ਸਿੰਗਲ ਕਿਸਮ t ਨੂੰ ਠੀਕ ਕਰਦੀ ਹੈ।


Another prominent list operation is concatenation.

ਇੱਕ ਹੋਰ ਪ੍ਰਮੁੱਖ ਸੂਚੀ ਓਪਰੇਸ਼ਨ ਕਨਕੈਟੇਨੇਸ਼ਨ ਹੈ।


How can we define an operation reversing lists?

ਅਸੀਂ ਸੂਚੀਆਂ ਨੂੰ ਉਲਟਾਉਣ ਦਾ ਇੱਕ ਓਪਰੇਸ਼ਨ ਕਿਵੇਂ ਪਰਿਭਾਸ਼ਤ ਕਰ ਸਕਦੇ ਹਾਂ?


This brings us to the following definition of list reversal.

ਇਹ ਸਾਨੂੰ ਸੂਚੀ ਉਲਟਾਉਣ ਦੀ ਹੇਠ ਲਿਖੀ ਪਰਿਭਾਸ਼ਾ ਵੱਲ ਲੈ ਜਾਂਦਾ ਹੈ।


We can also define a tail recursive list reversal function.

ਅਸੀਂ ਇੱਕ ਪੂਛ ਰਿਕਰਸਿਵ ਸੂਚੀ ਉਲਟਾਉਣ ਫੰਕਸ਼ਨ ਵੀ ਪਰਿਭਾਸ਼ਤ ਕਰ ਸਕਦੇ ਹਾਂ।


The functions defined so far are all defined by list recursion.

ਹੁਣ ਤੱਕ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤੇ ਗਏ ਫੰਕਸ਼ਨ ਸਾਰੇ ਸੂਚੀ ਰਿਕਰਸ਼ਨ ਦੁਆਰਾ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤੇ ਗਏ ਹਨ।


List recursion always terminates since lists are obtained from nil with finitely many applications of cons.

ਸੂਚੀ ਰਿਕਰਸ਼ਨ ਹਮੇਸ਼ਾ ਖਤਮ ਹੁੰਦੀ ਹੈ ਕਿਉਂਕਿ ਸੂਚੀਆਂ ਨੂੰ ਨੀਲ ਤੋਂ ਕੰਸ ਦੀਆਂ ਸੀਮਤ ਐਪਲੀਕੇਸ਼ਨਾਂ ਨਾਲ ਪ੍ਰਾਪਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।


Another prominent list operation is map.

ਇੱਕ ਹੋਰ ਪ੍ਰਮੁੱਖ ਸੂਚੀ ਓਪਰੇਸ਼ਨ ਮੈਪ ਹੈ।


We say that map applies the function pointwise to a list.

ਅਸੀਂ ਕਹਿੰਦੇ ਹਾਂ ਕਿ ਮੈਪ ਇੱਕ ਸੂਚੀ ਵਿੱਚ ਫੰਕਸ਼ਨ ਨੂੰ ਪੁਆਇੰਟਵਾਈਜ਼ ਲਾਗੂ ਕਰਦਾ ਹੈ।


Finally, we define a function that yields the list of all integers between two numbers m and n (including m and n).

ਅੰਤ ਵਿੱਚ, ਅਸੀਂ ਇੱਕ ਫੰਕਸ਼ਨ ਪਰਿਭਾਸ਼ਤ ਕਰਦੇ ਹਾਂ ਜੋ ਦੋ ਸੰਖਿਆਵਾਂ m ਅਤੇ n (m ਅਤੇ n ਸਮੇਤ) ਦੇ ਵਿਚਕਾਰ ਸਾਰੇ ਪੂਰਨ ਅੰਕਾਂ ਦੀ ਸੂਚੀ ਦਿੰਦਾ ਹੈ।


Given a mathematical definition of a list function, it is straightforward to declare the function in OCaml.

ਇੱਕ ਸੂਚੀ ਫੰਕਸ਼ਨ ਦੀ ਗਣਿਤਿਕ ਪਰਿਭਾਸ਼ਾ ਦਿੱਤੀ ਗਈ ਹੈ, OCaml ਵਿੱਚ ਫੰਕਸ਼ਨ ਦਾ ਐਲਾਨ ਕਰਨਾ ਸਿੱਧਾ ਹੈ।


The essential new construct are so-called match expressions making it possible to discriminate between empty and nonempty lists.

ਜ਼ਰੂਰੀ ਨਵਾਂ ਨਿਰਮਾਣ ਅਖੌਤੀ ਮੈਚ ਸਮੀਕਰਨ ਹਨ ਜੋ ਖਾਲੀ ਅਤੇ ਗੈਰ-ਖਾਲੀ ਸੂਚੀਆਂ ਵਿੱਚ ਫਰਕ ਕਰਨਾ ਸੰਭਵ ਬਣਾਉਂਦੇ ਹਨ।


The match expression realizes a case analysis on lists using separate rules for the empty list and for nonempty lists.

ਮੈਚ ਸਮੀਕਰਨ ਖਾਲੀ ਸੂਚੀ ਅਤੇ ਗੈਰ-ਖਾਲੀ ਸੂਚੀਆਂ ਲਈ ਵੱਖ-ਵੱਖ ਨਿਯਮਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਸੂਚੀਆਂ 'ਤੇ ਇੱਕ ਕੇਸ ਵਿਸ਼ਲੇਸ਼ਣ ਦਾ ਅਹਿਸਾਸ ਕਰਦਾ ਹੈ।


OCaml provides predefined functions for lists as fields of a predefined standard module List.

OCaml ਸੂਚੀਆਂ ਲਈ ਪਹਿਲਾਂ ਤੋਂ ਪਰਿਭਾਸ਼ਿਤ ਫੰਕਸ਼ਨ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ ਜਿਵੇਂ ਕਿ ਇੱਕ ਪਹਿਲਾਂ ਤੋਂ ਪਰਿਭਾਸ਼ਿਤ ਸਟੈਂਡਰਡ ਮੋਡੀਊਲ ਸੂਚੀ ਦੇ ਖੇਤਰ।


Sorting a list is easy: We start with the empty list, which is sorted, and insert the elements one by one.

ਇੱਕ ਸੂਚੀ ਨੂੰ ਛਾਂਟਣਾ ਆਸਾਨ ਹੈ: ਅਸੀਂ ਖਾਲੀ ਸੂਚੀ ਨਾਲ ਸ਼ੁਰੂ ਕਰਦੇ ਹਾਂ, ਜੋ ਕਿ ਛਾਂਟੀ ਗਈ ਹੈ, ਅਤੇ ਇੱਕ-ਇੱਕ ਕਰਕੇ ਤੱਤਾਂ ਨੂੰ ਪਾਉਂਦੇ ਹਾਂ।


Once all elements are inserted, we have a sorted rearrangement of the list.

ਇੱਕ ਵਾਰ ਸਾਰੇ ਤੱਤ ਪਾ ਦਿੱਤੇ ਜਾਣ 'ਤੇ, ਸਾਡੇ ਕੋਲ ਸੂਚੀ ਦਾ ਇੱਕ ਛਾਂਟਿਆ ਹੋਇਆ ਪੁਨਰ-ਵਿਵਸਥਾ ਹੈ।


Here are definitions of the necessary functions: insert, isort.

ਲੋੜੀਂਦੇ ਫੰਕਸ਼ਨਾਂ ਦੀਆਂ ਪਰਿਭਾਸ਼ਾਵਾਂ ਇੱਥੇ ਹਨ: ਪਾਓ, ਆਈਸੋਰਟ।


Make sure you understand every detail of the definition.

ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਸੀਂ ਪਰਿਭਾਸ਼ਾ ਦੇ ਹਰ ਵੇਰਵੇ ਨੂੰ ਸਮਝਦੇ ਹੋ।


We offer a trace: isort[3,2] = insert3 (isort[2]) = insert3 (insert2 (isort[])).

ਅਸੀਂ ਇੱਕ ਟਰੇਸ ਪੇਸ਼ ਕਰਦੇ ਹਾਂ: ਆਈਸੋਰਟ[3,2] = ਇਨਸਰਟ3 (ਆਈਸੋਰਟ[2]) = ਇਨਸਰਟ3 (ਇਨਸਰਟ2 (ਆਈਸੋਰਟ[]))।


Note that isort inserts the elements of the input list reversing the order they appear in the input list.

ਨੋਟ ਕਰੋ ਕਿ ਆਈਸੋਰਟ ਇਨਪੁਟ ਸੂਚੀ ਦੇ ਤੱਤਾਂ ਨੂੰ ਉਸ ਕ੍ਰਮ ਨੂੰ ਉਲਟਾਉਂਦੇ ਹੋਏ ਪਾਉਂਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਉਹ ਇਨਪੁਟ ਸੂਚੀ ਵਿੱਚ ਦਿਖਾਈ ਦਿੰਦੇ ਹਨ।


More elegantly, we may say that the insertion function preserves sortedness.

ਵਧੇਰੇ ਸਲੀਕੇ ਨਾਲ, ਅਸੀਂ ਕਹਿ ਸਕਦੇ ਹਾਂ ਕਿ ਸੰਮਿਲਨ ਫੰਕਸ਼ਨ ਛਾਂਟੀ ਨੂੰ ਬਰਕਰਾਰ ਰੱਖਦਾ ਹੈ।


Declaring the functions insert and isort in OCaml is now routine.

ਓਕੈਮਲ ਵਿੱਚ ਫੰਕਸ਼ਨਾਂ ਇਨਸਰਟ ਅਤੇ ਆਈਸੋਰਟ ਦਾ ਐਲਾਨ ਕਰਨਾ ਹੁਣ ਰੁਟੀਨ ਹੈ।


There is, however, the surprise that OCaml derives polymorphic types for insert and isort if no type specification is given.

ਹਾਲਾਂਕਿ, ਹੈਰਾਨੀ ਦੀ ਗੱਲ ਹੈ ਕਿ ਓਕੈਮਲ ਇਨਸਰਟ ਅਤੇ ਆਈਸੋਰਟ ਲਈ ਪੌਲੀਮੋਰਫਿਕ ਕਿਸਮਾਂ ਪ੍ਰਾਪਤ ਕਰਦਾ ਹੈ ਜੇਕਰ ਕੋਈ ਕਿਸਮ ਨਿਰਧਾਰਨ ਨਹੀਂ ਦਿੱਤਾ ਗਿਆ ਹੈ।


This follows from the fact that OCaml accommodates comparisons with the polymorphic type.

ਇਹ ਤੱਥ ਤੋਂ ਬਾਅਦ ਆਉਂਦਾ ਹੈ ਕਿ ਓਕੈਮਲ ਪੌਲੀਮੋਰਫਿਕ ਕਿਸਮ ਦੇ ਨਾਲ ਤੁਲਨਾਵਾਂ ਨੂੰ ਅਨੁਕੂਲਿਤ ਕਰਦਾ ਹੈ।


We will explain later how comparisons behave on tuples and lists.

ਅਸੀਂ ਬਾਅਦ ਵਿੱਚ ਦੱਸਾਂਗੇ ਕਿ ਟਿਊਪਲ ਅਤੇ ਸੂਚੀਆਂ 'ਤੇ ਤੁਲਨਾਵਾਂ ਕਿਵੇਂ ਵਿਵਹਾਰ ਕਰਦੀਆਂ ਹਨ।


For boolean values, OCaml realizes the order false < true.

ਬੂਲੀਅਨ ਮੁੱਲਾਂ ਲਈ, ਓਕੈਮਲ ਆਰਡਰ ਗਲਤ < ਸੱਚ ਨੂੰ ਮਹਿਸੂਸ ਕਰਦਾ ਹੈ।


Thus we have isort[true,false,false,true] = [false,false,true,true].

ਇਸ ਤਰ੍ਹਾਂ ਸਾਡੇ ਕੋਲ ਆਈਸੋਰਟ[ਸੱਚ,ਝੂਠ,ਝੂਠ,ਸੱਚ] = [ਝੂਠ,ਝੂਠ,ਸੱਚ,ਸੱਚ] ਹੈ।


Declare a function sorted that tests whether a list is sorted.

ਇੱਕ ਫੰਕਸ਼ਨ ਦਾ ਐਲਾਨ ਕਰੋ ਜੋ ਇਹ ਜਾਂਚਦਾ ਹੈ ਕਿ ਕੀ ਇੱਕ ਸੂਚੀ ਛਾਂਟੀ ਗਈ ਹੈ।


Use tail recursion. Write the function with a generalized match and show how the generalized match translates into simple matches.

ਪੂਛ ਰੀਕਰਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰੋ। ਇੱਕ ਆਮ ਮੈਚ ਨਾਲ ਫੰਕਸ਼ਨ ਲਿਖੋ ਅਤੇ ਦਿਖਾਓ ਕਿ ਆਮ ਮੈਚ ਸਧਾਰਨ ਮੈਚਾਂ ਵਿੱਚ ਕਿਵੇਂ ਅਨੁਵਾਦ ਕਰਦਾ ਹੈ।


Declare a function perm that tests whether two lists are equal up to reordering.

ਇੱਕ ਫੰਕਸ਼ਨ ਪਰਮ ਦਾ ਐਲਾਨ ਕਰੋ ਜੋ ਇਹ ਜਾਂਚਦਾ ਹੈ ਕਿ ਕੀ ਦੋ ਸੂਚੀਆਂ ਨੂੰ ਮੁੜ ਵਿਵਸਥਿਤ ਕਰਨ ਤੱਕ ਬਰਾਬਰ ਹਨ।


Declare a function sortdesc that reorders a list such that the elements appear in descending order.

ਇੱਕ ਫੰਕਸ਼ਨ ਸੋਰਟਡੈਸਕ ਦਾ ਐਲਾਨ ਕਰੋ ਜੋ ਇੱਕ ਸੂਚੀ ਨੂੰ ਮੁੜ ਵਿਵਸਥਿਤ ਕਰਦਾ ਹੈ ਤਾਂ ਜੋ ਤੱਤ ਘਟਦੇ ਕ੍ਰਮ ਵਿੱਚ ਦਿਖਾਈ ਦੇਣ।


ਉਦਾਹਰਨ ਲਈ, ਅਸੀਂ ਚਾਹੁੰਦੇ ਹਾਂ ਕਿ ਸੋਰਟ ਡੈਸਕ[5,3,2,5,2,3] = [5,5,3,3,2,2]।


Declare a function dsort that sorts a list and removes all duplicates.

ਇੱਕ ਫੰਕਸ਼ਨ ਡੀਸੋਰਟ ਦਾ ਐਲਾਨ ਕਰੋ ਜੋ ਇੱਕ ਸੂਚੀ ਨੂੰ ਛਾਂਟਦਾ ਹੈ ਅਤੇ ਸਾਰੇ ਡੁਪਲੀਕੇਟਾਂ ਨੂੰ ਹਟਾਉਂਦਾ ਹੈ।


The trees in the forest were tall and green.

ਜੰਗਲ ਦੇ ਰੁੱਖ ਉੱਚੇ ਅਤੇ ਹਰੇ ਸਨ।


ਕੀ ਤੁਸੀਂ ਮੈਨੂੰ ਲੂਣ ਦੇ ਸਕਦੇ ਹੋ?


The company announced a new product launch.

ਕੰਪਨੀ ਨੇ ਇੱਕ ਨਵੇਂ ਉਤਪਾਦ ਦੀ ਸ਼ੁਰੂਆਤ ਦਾ ਐਲਾਨ ਕੀਤਾ।


He is studying computer science at the university.

ਉਹ ਯੂਨੀਵਰਸਿਟੀ ਵਿੱਚ ਕੰਪਿਊਟਰ ਵਿਗਿਆਨ ਦੀ ਪੜ੍ਹਾਈ ਕਰ ਰਿਹਾ ਹੈ।


The algorithm efficiently sorts the data.

ਐਲਗੋਰਿਦਮ ਡਾਟਾ ਨੂੰ ਕੁਸ਼ਲਤਾ ਨਾਲ ਛਾਂਟਦਾ ਹੈ।


ਚੁਣੌਤੀਆਂ ਦੇ ਬਾਵਜੂਦ, ਉਹ ਸਫਲ ਹੋਏ।


The government implemented new policies.

ਸਰਕਾਰ ਨੇ ਨਵੀਆਂ ਨੀਤੀਆਂ ਲਾਗੂ ਕੀਤੀਆਂ।


The research paper explores the impact of climate change.

ਖੋਜ ਪੱਤਰ ਜਲਵਾਯੂ ਪਰਿਵਰਤਨ ਦੇ ਪ੍ਰਭਾਵ ਦੀ ਪੜਚੋਲ ਕਰਦਾ ਹੈ।


The complex system requires careful analysis.

ਗੁੰਝਲਦਾਰ ਪ੍ਰਣਾਲੀ ਨੂੰ ਧਿਆਨ ਨਾਲ ਵਿਸ਼ਲੇਸ਼ਣ ਦੀ ਲੋੜ ਹੈ।


The economic forecast predicts a recession.

ਆਰਥਿਕ ਪੂਰਵ ਅਨੁਮਾਨ ਇੱਕ ਮੰਦੀ ਦੀ ਭਵਿੱਖਬਾਣੀ ਕਰਦਾ ਹੈ।


The artist's work reflects a deep understanding of human emotion.

ਕਲਾਕਾਰ ਦਾ ਕੰਮ ਮਨੁੱਖੀ ਭਾਵਨਾਵਾਂ ਦੀ ਡੂੰਘੀ ਸਮਝ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ।


The development of artificial intelligence has far-reaching implications.

ਆਰਟੀਫੀਸ਼ੀਅਲ ਇੰਟੈਲੀਜੈਂਸ ਦਾ ਵਿਕਾਸ ਦੂਰਗਾਮੀ ਪ੍ਰਭਾਵ ਰੱਖਦਾ ਹੈ।


The negotiations were protracted and ultimately unsuccessful.

ਗੱਲਬਾਤ ਲੰਬੀ ਚੱਲੀ ਅਤੇ ਆਖਰਕਾਰ ਅਸਫਲ ਰਹੀ।


The philosophical debate centered on the nature of reality.

ਦਾਰਸ਼ਨਿਕ ਬਹਿਸ ਹਕੀਕਤ ਦੀ ਪ੍ਰਕਿਰਤੀ 'ਤੇ ਕੇਂਦਰਿਤ ਸੀ।


The scientific community is investigating the anomaly.

ਵਿਗਿਆਨਕ ਭਾਈਚਾਰਾ ਅਸਧਾਰਨਤਾ ਦੀ ਜਾਂਚ ਕਰ ਰਿਹਾ ਹੈ।


The intricate design of the building was admired by all.

ਇਮਾਰਤ ਦੇ ਗੁੰਝਲਦਾਰ ਡਿਜ਼ਾਈਨ ਦੀ ਸਭ ਨੇ ਪ੍ਰਸ਼ੰਸਾ ਕੀਤੀ।


The implications of the new law are still being assessed.

ਨਵੇਂ ਕਾਨੂੰਨ ਦੇ ਪ੍ਰਭਾਵਾਂ ਦਾ ਅਜੇ ਵੀ ਮੁਲਾਂਕਣ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ।


The company's innovative approach revolutionized the industry.

ਕੰਪਨੀ ਦੇ ਨਵੀਨਤਾਕਾਰੀ ਪਹੁੰਚ ਨੇ ਉਦਯੋਗ ਵਿੱਚ ਕ੍ਰਾਂਤੀ ਲਿਆਂਦੀ।


The subtle nuances of the language were lost in translation.

ਭਾਸ਼ਾ ਦੇ ਸੂਖਮ ਪਹਿਲੂ ਅਨੁਵਾਦ ਵਿੱਚ ਗੁਆਚ ਗਏ।


The convergence of technologies is transforming society.

ਤਕਨਾਲੋਜੀਆਂ ਦਾ ਮੇਲ ਸਮਾਜ ਨੂੰ ਬਦਲ ਰਿਹਾ ਹੈ।


If this is the case, check yields the unique type of the expression, otherwise it throws an exception.

ਜੇਕਰ ਅਜਿਹਾ ਹੈ, ਤਾਂ ਚੈੱਕ ਐਕਸਪ੍ਰੈਸ਼ਨ ਦੀ ਵਿਲੱਖਣ ਕਿਸਮ ਦਿੰਦਾ ਹੈ, ਨਹੀਂ ਤਾਂ ਇਹ ਇੱਕ ਅਪਵਾਦ ਸੁੱਟਦਾ ਹੈ।


Expressions containing untyped lambda or recursive let expressions count as ill-typed.

ਅਣ-ਟਾਈਪ ਕੀਤੇ ਲੈਂਡਾ ਜਾਂ ਰਿਕਰਸਿਵ ਲੈਟ ਐਕਸਪ੍ਰੈਸ਼ਨ ਵਾਲੇ ਐਕਸਪ੍ਰੈਸ਼ਨ ਨੂੰ ਗਲਤ-ਟਾਈਪ ਕੀਤਾ ਮੰਨਿਆ ਜਾਂਦਾ ਹੈ।


The type checker matches on the given expression and for each variant follows the algorithmic reading of the respective typing rule.

ਟਾਈਪ ਚੈਕਰ ਦਿੱਤੇ ਗਏ ਐਕਸਪ੍ਰੈਸ਼ਨ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ ਅਤੇ ਹਰੇਕ ਰੂਪ ਲਈ ਸੰਬੰਧਿਤ ਟਾਈਪਿੰਗ ਨਿਯਮ ਦੀ ਐਲਗੋਰਿਦਮਿਕ ਰੀਡਿੰਗ ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ।


Note that we are using helper functions for operator and function applications for better readability.

ਧਿਆਨ ਦਿਓ ਕਿ ਅਸੀਂ ਬਿਹਤਰ ਪੜ੍ਹਨਯੋਗਤਾ ਲਈ ਓਪਰੇਟਰ ਅਤੇ ਫੰਕਸ਼ਨ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਸਹਾਇਕ ਫੰਕਸ਼ਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰ ਰਹੇ ਹਾਂ।


We realize the evaluator with a function eval:env var value→exp→value that evaluates an expression in an environment.

ਅਸੀਂ ਇੱਕ ਫੰਕਸ਼ਨ eval:env var value→exp→value ਨਾਲ ਮੁਲਾਂਕਣਕਰਤਾ ਨੂੰ ਮਹਿਸੂਸ ਕਰਦੇ ਹਾਂ ਜੋ ਇੱਕ ਵਾਤਾਵਰਣ ਵਿੱਚ ਇੱਕ ਐਕਸਪ੍ਰੈਸ਼ਨ ਦਾ ਮੁਲਾਂਕਣ ਕਰਦਾ ਹੈ।


As with the type checker, we use helper functions for operator and function applications for better readability.

ਟਾਈਪ ਚੈਕਰ ਵਾਂਗ, ਅਸੀਂ ਬਿਹਤਰ ਪੜ੍ਹਨਯੋਗਤਾ ਲਈ ਓਪਰੇਟਰ ਅਤੇ ਫੰਕਸ਼ਨ ਐਪਲੀਕੇਸ਼ਨਾਂ ਲਈ ਸਹਾਇਕ ਫੰਕਸ਼ਨਾਂ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ।


The lexer for Mini-OCaml needs work, mainly because it needs to recognize identifiers (i.e., variables) and number constants.

ਮਿਨੀ-ਓਕੈਮਲ ਲਈ ਲੈਕਸਰ ਨੂੰ ਕੰਮ ਕਰਨ ਦੀ ਲੋੜ ਹੈ, ਮੁੱਖ ਤੌਰ 'ਤੇ ਕਿਉਂਕਿ ਇਸਨੂੰ ਪਛਾਣਕਰਤਾ (ਭਾਵ, ਵੇਰੀਏਬਲ) ਅਤੇ ਨੰਬਰ ਸਥਿਰਾਂਕਾਂ ਨੂੰ ਪਛਾਣਨ ਦੀ ਲੋੜ ਹੈ।


We realize the lexer with 5 mutually tail-recursive functions.

ਅਸੀਂ 5 ਆਪਸੀ ਪੂਛ-ਰਿਕਰਸਿਵ ਫੰਕਸ਼ਨਾਂ ਨਾਲ ਲੈਕਸਰ ਨੂੰ ਮਹਿਸੂਸ ਕਰਦੇ ਹਾਂ।


There is some cleverness in this design.

ਇਸ ਡਿਜ਼ਾਈਨ ਵਿੱਚ ਕੁਝ ਚਤੁਰਾਈ ਹੈ।


We avoid considering auxiliary strings by accessing the given string by position using String.get and by using String.sub to extract an identifier identified by its starting position and length.

ਅਸੀਂ String.get ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸਥਿਤੀ ਦੁਆਰਾ ਦਿੱਤੀ ਗਈ ਸਤਰ ਤੱਕ ਪਹੁੰਚ ਕਰਕੇ ਅਤੇ String.sub ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਪਛਾਣਕਰਤਾ ਨੂੰ ਕੱਢਣ ਲਈ ਸਹਾਇਕ ਸਤਰਾਂ 'ਤੇ ਵਿਚਾਰ ਕਰਨ ਤੋਂ ਬਚਦੇ ਹਾਂ ਜੋ ਇਸਦੇ ਸ਼ੁਰੂਆਤੀ ਸਥਾਨ ਅਤੇ ਲੰਬਾਈ ਦੁਆਰਾ ਪਛਾਣਿਆ ਜਾਂਦਾ ਹੈ।


The constant true and false and keywords like if are first recognized as identifiers and then transformed into the respective constant or keyword tokens.

ਸਥਿਰ ਸੱਚ ਅਤੇ ਝੂਠ ਅਤੇ ਜੇ ਵਰਗੇ ਕੀਵਰਡ ਪਹਿਲਾਂ ਪਛਾਣਕਰਤਾ ਵਜੋਂ ਪਛਾਣੇ ਜਾਂਦੇ ਹਨ ਅਤੇ ਫਿਰ ਸੰਬੰਧਿਤ ਸਥਿਰ ਜਾਂ ਕੀਵਰਡ ਟੋਕਨਾਂ ਵਿੱਚ ਬਦਲ ਜਾਂਦੇ ਹਨ।


Digits and letters are recognized by using the function Char.code and exploiting the fact that the codes of the respective characters follow each other continuously in a canonical order.

ਅੰਕਾਂ ਅਤੇ ਅੱਖਰਾਂ ਨੂੰ ਫੰਕਸ਼ਨ Char.code ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਪਛਾਣਿਆ ਜਾਂਦਾ ਹੈ ਅਤੇ ਇਸ ਤੱਥ ਦਾ ਸ਼ੋਸ਼ਣ ਕਰਕੇ ਕਿ ਸੰਬੰਧਿਤ ਅੱਖਰਾਂ ਦੇ ਕੋਡ ਇੱਕ ਦੂਜੇ ਦਾ ਲਗਾਤਾਰ ਇੱਕ ਕੈਨੋਨੀਕਲ ਆਰਡਰ ਵਿੱਚ ਪਾਲਣ ਕਰਦੇ ਹਨ।


Following OCaml, an identifier must start with a lower case letter and can then continue with digits, lower and upper case letters, and the special characters ‘_’ (underline) and ‘'’ (quote).

ਓਕੈਮਲ ਦੇ ਬਾਅਦ, ਇੱਕ ਪਛਾਣਕਰਤਾ ਇੱਕ ਛੋਟੇ ਅੱਖਰ ਨਾਲ ਸ਼ੁਰੂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਅਤੇ ਫਿਰ ਅੰਕਾਂ, ਛੋਟੇ ਅਤੇ ਵੱਡੇ ਅੱਖਰਾਂ, ਅਤੇ ਵਿਸ਼ੇਸ਼ ਅੱਖਰਾਂ ‘_’ (ਅੰਡਰਲਾਈਨ) ਅਤੇ ‘'’ (ਕੋਟ) ਨਾਲ ਜਾਰੀ ਰਹਿ ਸਕਦਾ ਹੈ।


Note the use of patterns with when conditions in the declaration of the parsing function lex.

ਪਾਰਸਿੰਗ ਫੰਕਸ਼ਨ lex ਦੇ ਐਲਾਨ ਵਿੱਚ ਜਦੋਂ ਸ਼ਰਤਾਂ ਦੇ ਨਾਲ ਪੈਟਰਨਾਂ ਦੀ ਵਰਤੋਂ ਨੂੰ ਨੋਟ ਕਰੋ।


We remark that the lexer follows the longest munch rule when it reads identifiers and numbers; that is, it reads as many characters as are possible for an identifier or number.

ਅਸੀਂ ਟਿੱਪਣੀ ਕਰਦੇ ਹਾਂ ਕਿ ਲੈਕਸਰ ਸਭ ਤੋਂ ਲੰਬਾ ਮੰਚ ਨਿਯਮ ਦੀ ਪਾਲਣਾ ਕਰਦਾ ਹੈ ਜਦੋਂ ਇਹ ਪਛਾਣਕਰਤਾ ਅਤੇ ਨੰਬਰ ਪੜ੍ਹਦਾ ਹੈ; ਭਾਵ, ਇਹ ਓਨੇ ਹੀ ਅੱਖਰ ਪੜ੍ਹਦਾ ਹੈ ਜਿੰਨੇ ਇੱਕ ਪਛਾਣਕਰਤਾ ਜਾਂ ਨੰਬਰ ਲਈ ਸੰਭਵ ਹਨ।


The parsing grammar for Mini-OCaml consists of a grammar for types and a grammar for expressions building on the grammar for types.

ਮਿਨੀ-ਓਕੈਮਲ ਲਈ ਪਾਰਸਿੰਗ ਵਿਆਕਰਣ ਵਿੱਚ ਟਾਈਪਾਂ ਲਈ ਇੱਕ ਵਿਆਕਰਣ ਅਤੇ ਟਾਈਪਾਂ ਲਈ ਵਿਆਕਰਣ 'ਤੇ ਬਣੇ ਐਕਸਪ੍ਰੈਸ਼ਨਾਂ ਲਈ ਇੱਕ ਵਿਆਕਰਣ ਸ਼ਾਮਲ ਹੁੰਦਾ ਹੈ।


The top level takes care of the prefix phrases, which recurse to the top level.

ਸਿਖਰ ਦਾ ਪੱਧਰ ਪ੍ਰੀਫਿਕਸ ਵਾਕਾਂਸ਼ਾਂ ਦਾ ਧਿਆਨ ਰੱਖਦਾ ਹੈ, ਜੋ ਸਿਖਰ ਦੇ ਪੱਧਰ 'ਤੇ ਦੁਬਾਰਾ ਆਉਂਦੇ ਹਨ।


We now come to the parsing grammar for Mini-OCaml types.

ਹੁਣ ਅਸੀਂ ਮਿਨੀ-ਓਕੈਮਲ ਟਾਈਪਾਂ ਲਈ ਪਾਰਸਿੰਗ ਵਿਆਕਰਣ 'ਤੇ ਆਉਂਦੇ ਹਾਂ।


The project counts as the test for this week.

ਪ੍ਰੋਜੈਕਟ ਇਸ ਹਫ਼ਤੇ ਦੀ ਪ੍ਰੀਖਿਆ ਵਜੋਂ ਗਿਣਿਆ ਜਾਂਦਾ ਹੈ।


ਅਸੀਂ ਉਮੀਦ ਕਰਦੇ ਹਾਂ ਕਿ ਤੁਸੀਂ ਪ੍ਰੋਜੈਕਟ ਦਾ ਆਨੰਦ ਮਾਣੋਗੇ।


The algorithm efficiently computes the greatest common divisor.

ਇਹ ਐਲਗੋਰਿਦਮ ਸਭ ਤੋਂ ਵੱਡੇ ਸਾਂਝੇ ਭਾਜਕ ਦੀ ਕੁਸ਼ਲਤਾ ਨਾਲ ਗਣਨਾ ਕਰਦਾ ਹੈ।


Function induction is a key concept in proving the correctness of recursive functions.

ਫੰਕਸ਼ਨ ਇੰਡਕਸ਼ਨ ਰੀਕਰਸਿਵ ਫੰਕਸ਼ਨਾਂ ਦੀ ਸਹੀਤਾ ਨੂੰ ਸਾਬਤ ਕਰਨ ਵਿੱਚ ਇੱਕ ਮੁੱਖ ਸੰਕਲਪ ਹੈ।


ਅਰੇਅ ਬਦਲਣਯੋਗ ਡਾਟਾ ਢਾਂਚੇ ਹਨ।


The modulo rule is applied repeatedly in Euclid's algorithm.

ਯੂਕਲਿਡ ਦੇ ਐਲਗੋਰਿਦਮ ਵਿੱਚ ਮੋਡੂਲੋ ਨਿਯਮ ਨੂੰ ਵਾਰ-ਵਾਰ ਲਾਗੂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।


Complete induction is a generalization of mathematical induction.

ਸੰਪੂਰਨ ਇੰਡਕਸ਼ਨ ਗਣਿਤਿਕ ਇੰਡਕਸ਼ਨ ਦਾ ਇੱਕ ਸਰਵ ਸਧਾਰਨ ਰੂਪ ਹੈ।


The GCD of two numbers is uniquely defined.

ਦੋ ਸੰਖਿਆਵਾਂ ਦਾ GCD ਵਿਲੱਖਣ ਰੂਪ ਵਿੱਚ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਗਿਆ ਹੈ।


Arrays have fixed-length and constant-time field access.

ਅਰੇਅ ਵਿੱਚ ਨਿਸ਼ਚਿਤ ਲੰਬਾਈ ਅਤੇ ਸਥਿਰ-ਸਮੇਂ ਦੀ ਫੀਲਡ ਪਹੁੰਚ ਹੁੰਦੀ ਹੈ।


The running time of the GCD algorithm is logarithmic.

GCD ਐਲਗੋਰਿਦਮ ਦਾ ਚੱਲਣ ਦਾ ਸਮਾਂ ਲਘੂਗਣਕ ਹੈ।


We will use function induction to prove the property.

ਅਸੀਂ ਇਸ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਸਾਬਤ ਕਰਨ ਲਈ ਫੰਕਸ਼ਨ ਇੰਡਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ।


The prime factorization of a number is unique.

ਇੱਕ ਸੰਖਿਆ ਦਾ ਪ੍ਰਾਈਮ ਫੈਕਟੋਰਾਈਜ਼ੇਸ਼ਨ ਵਿਲੱਖਣ ਹੁੰਦਾ ਹੈ।


The function terminates because recursion decreases the second argument.

ਫੰਕਸ਼ਨ ਖਤਮ ਹੁੰਦਾ ਹੈ ਕਿਉਂਕਿ ਰੀਕਰਸ਼ਨ ਦੂਜੇ ਆਰਗੂਮੈਂਟ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ।


The algorithm is based on straightforward rules.

ਐਲਗੋਰਿਦਮ ਸਿੱਧੇ ਨਿਯਮਾਂ 'ਤੇ ਅਧਾਰਤ ਹੈ।


Let's consider an example of array operations.

ਆਓ ਅਰੇਅ ਓਪਰੇਸ਼ਨਾਂ ਦੀ ਇੱਕ ਉਦਾਹਰਣ 'ਤੇ ਵਿਚਾਰ ਕਰੀਏ।


The key difference between lists and arrays is mutability.

ਸੂਚੀਆਂ ਅਤੇ ਅਰੇਅ ਵਿਚਕਾਰ ਮੁੱਖ ਅੰਤਰ ਬਦਲਣਯੋਗਤਾ ਹੈ।


Invariants are crucial for verifying the prime factorization algorithm.

ਪ੍ਰਾਈਮ ਫੈਕਟੋਰਾਈਜ਼ੇਸ਼ਨ ਐਲਗੋਰਿਦਮ ਦੀ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਇਨਵੇਰੀਐਂਟਸ ਮਹੱਤਵਪੂਰਨ ਹਨ।


The function should return a quotient-remainder pair.

ਫੰਕਸ਼ਨ ਨੂੰ ਇੱਕ ਭਾਗਫਲ-ਬਾਕੀ ਜੋੜਾ ਵਾਪਸ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ।


We can use recursion to reduce the initial numbers.

ਅਸੀਂ ਸ਼ੁਰੂਆਤੀ ਸੰਖਿਆਵਾਂ ਨੂੰ ਘਟਾਉਣ ਲਈ ਰੀਕਰਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰ ਸਕਦੇ ਹਾਂ।


ਐਲਗੋਰਿਦਮ ਦੀ ਸਹੀਤਾ ਸਪੱਸ਼ਟ ਹੈ।


The function's type ensures termination.

ਫੰਕਸ਼ਨ ਦੀ ਕਿਸਮ ਸਮਾਪਤੀ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ।


The proof suggests a function to obtain sublists.

ਪ੍ਰਮਾਣ ਸਬਲਿਸਟ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਇੱਕ ਫੰਕਸ਼ਨ ਦਾ ਸੁਝਾਅ ਦਿੰਦਾ ਹੈ।


The algorithm's running time assumes constant time for field access, which is true for arrays.

ਇਸ ਐਲਗੋਰਿਦਮ ਦਾ ਚੱਲਣ ਸਮਾਂ ਖੇਤਰ ਪਹੁੰਚ ਲਈ ਸਥਿਰ ਸਮਾਂ ਮੰਨਦਾ ਹੈ, ਜੋ ਕਿ ਐਰੇ ਲਈ ਸਹੀ ਹੈ।


Binary search is used to distinguish it from linear search, which has linear running time.

ਬਾਈਨਰੀ ਖੋਜ ਦੀ ਵਰਤੋਂ ਇਸਨੂੰ ਲੀਨੀਅਰ ਖੋਜ ਤੋਂ ਵੱਖ ਕਰਨ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ, ਜਿਸਦਾ ਲੀਨੀਅਰ ਚੱਲਣ ਸਮਾਂ ਹੁੰਦਾ ਹੈ।


Binary search usually returns an index where the element searched for occurs in the positive case.

ਆਮ ਤੌਰ 'ਤੇ ਬਾਈਨਰੀ ਖੋਜ ਇੱਕ ਇੰਡੈਕਸ ਵਾਪਸ ਕਰਦੀ ਹੈ ਜਿੱਥੇ ਤਲਾਸ਼ਿਆ ਗਿਆ ਤੱਤ ਸਕਾਰਾਤਮਕ ਮਾਮਲੇ ਵਿੱਚ ਹੁੰਦਾ ਹੈ।


To ease the presentation of binary search, we use a three-valued constructor type.

ਬਾਈਨਰੀ ਖੋਜ ਦੀ ਪੇਸ਼ਕਾਰੀ ਨੂੰ ਸੌਖਾ ਬਣਾਉਣ ਲਈ, ਅਸੀਂ ਇੱਕ ਤਿੰਨ-ਮੁੱਲ ਵਾਲੇ ਨਿਰਮਾਤਾ ਦੀ ਕਿਸਮ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ।


The binary search function can be declared as follows.

ਬਾਈਨਰੀ ਖੋਜ ਫੰਕਸ਼ਨ ਨੂੰ ਹੇਠ ਲਿਖੇ ਅਨੁਸਾਰ ਘੋਸ਼ਿਤ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ।


The worker function is tail-recursive, and the array segment is halved upon recursion.

ਵਰਕਰ ਫੰਕਸ਼ਨ ਪੂਛ-ਰਿਕਰਸਿਵ ਹੈ, ਅਤੇ ਐਰੇ ਸੈਗਮੈਂਟ ਨੂੰ ਰਿਕਰਸ਼ਨ 'ਤੇ ਅੱਧਾ ਕਰ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ।


ਬਾਈਨਰੀ ਖੋਜ ਦੋ ਇਨਵੇਰੀਐਂਟਸ ਨੂੰ ਸੰਤੁਸ਼ਟ ਕਰਦੀ ਹੈ।


The state of the array agrees with the initial state.

ਐਰੇ ਦੀ ਸਥਿਤੀ ਸ਼ੁਰੂਆਤੀ ਸਥਿਤੀ ਨਾਲ ਸਹਿਮਤ ਹੈ।


All elements to the left of 'l' are smaller than 'x'.

'l' ਦੇ ਖੱਬੇ ਪਾਸੇ ਦੇ ਸਾਰੇ ਤੱਤ 'x' ਨਾਲੋਂ ਛੋਟੇ ਹਨ।


Linear search doesn’t assume the array is sorted.

ਲੀਨੀਅਰ ਖੋਜ ਇਹ ਨਹੀਂ ਮੰਨਦੀ ਕਿ ਐਰੇ ਨੂੰ ਕ੍ਰਮਬੱਧ ਕੀਤਾ ਗਿਆ ਹੈ।


Declare a function that checks whether a value occurs in an array.

ਇੱਕ ਫੰਕਸ਼ਨ ਦਾ ਐਲਾਨ ਕਰੋ ਜੋ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਕੋਈ ਮੁੱਲ ਇੱਕ ਐਰੇ ਵਿੱਚ ਹੁੰਦਾ ਹੈ।


The running time of linear search should be O(n).

ਲੀਨੀਅਰ ਖੋਜ ਦਾ ਚੱਲਣ ਸਮਾਂ O(n) ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।


Declare a function that checks if there is some i ≤ n such that f(i) = x.

ਇੱਕ ਫੰਕਸ਼ਨ ਦਾ ਐਲਾਨ ਕਰੋ ਜੋ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਕੋਈ i ≤ n ਹੈ ਜਿਵੇਂ ਕਿ f(i) = x।


A function f is increasing if f(i) ≤ f(j) whenever i ≤ j.

ਇੱਕ ਫੰਕਸ਼ਨ f ਵੱਧ ਰਿਹਾ ਹੈ ਜੇਕਰ f(i) ≤ f(j) ਜਦੋਂ ਵੀ i ≤ j।


There is an elegant algorithm reversing the elements of an array.

ਇੱਕ ਐਰੇ ਦੇ ਤੱਤਾਂ ਨੂੰ ਉਲਟਾਉਣ ਲਈ ਇੱਕ ਸ਼ਾਨਦਾਰ ਐਲਗੋਰਿਦਮ ਹੈ।


The algorithm is based on a function swapping values at two positions.

ਐਲਗੋਰਿਦਮ ਦੋ ਸਥਿਤੀਆਂ 'ਤੇ ਮੁੱਲਾਂ ਨੂੰ ਬਦਲਣ ਵਾਲੇ ਇੱਕ ਫੰਕਸ਼ਨ 'ਤੇ ਅਧਾਰਤ ਹੈ।


The algorithm reverses a segment i < j in an array.

ਐਲਗੋਰਿਦਮ ਇੱਕ ਐਰੇ ਵਿੱਚ ਇੱਕ ਸੈਗਮੈਂਟ i < j ਨੂੰ ਉਲਟਾਉਂਦਾ ਹੈ।


Function reverse satisfies two invariants.

ਫੰਕਸ਼ਨ ਰਿਵਰਸ ਦੋ ਇਨਵੇਰੀਐਂਟਸ ਨੂੰ ਸੰਤੁਸ਼ਟ ਕਰਦਾ ਹੈ।


The state of the array agrees with the initial state up to repeated swapping.

ਐਰੇ ਦੀ ਸਥਿਤੀ ਵਾਰ-ਵਾਰ ਬਦਲਣ ਤੱਕ ਸ਼ੁਰੂਆਤੀ ਸਥਿਤੀ ਨਾਲ ਸਹਿਮਤ ਹੈ।


The segments l ≤ i and j ≤ r agree with the reversed initial state.

ਸੈਗਮੈਂਟ l ≤ i ਅਤੇ j ≤ r ਉਲਟ ਸ਼ੁਰੂਆਤੀ ਸਥਿਤੀ ਨਾਲ ਸਹਿਮਤ ਹਨ।


The list [10,11,12] may be stored with three blocks connected through links.

ਸੂਚੀ [10,11,12] ਨੂੰ ਤਿੰਨ ਬਲਾਕਾਂ ਨਾਲ ਸਟੋਰ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ ਜੋ ਲਿੰਕਾਂ ਰਾਹੀਂ ਜੁੜੇ ਹੋਏ ਹਨ।


Each of the 3 blocks has two fields, where the first field represents a number in the list and the second field holds a link.

ਹਰੇਕ 3 ਬਲਾਕਾਂ ਦੇ ਦੋ ਖੇਤਰ ਹਨ, ਜਿੱਥੇ ਪਹਿਲਾ ਖੇਤਰ ਸੂਚੀ ਵਿੱਚ ਇੱਕ ਨੰਬਰ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ ਅਤੇ ਦੂਜਾ ਖੇਤਰ ਇੱਕ ਲਿੰਕ ਰੱਖਦਾ ਹੈ।


Links always point to blocks and are represented through the addresses of the blocks.

ਲਿੰਕ ਹਮੇਸ਼ਾ ਬਲਾਕਾਂ ਵੱਲ ਇਸ਼ਾਰਾ ਕਰਦੇ ਹਨ ਅਤੇ ਬਲਾਕਾਂ ਦੇ ਪਤਿਆਂ ਰਾਹੀਂ ਦਰਸਾਏ ਜਾਂਦੇ ਹਨ।


We might for instance choose the following addresses: 10 11 12 -1 95 96 62 63 104 105

ਉਦਾਹਰਣ ਲਈ, ਅਸੀਂ ਹੇਠਾਂ ਦਿੱਤੇ ਪਤੇ ਚੁਣ ਸਕਦੇ ਹਾਂ: 10 11 12 -1 95 96 62 63 104 105


It is also perfectly possible to represent circular lists like 1 2

ਇਸੇ ਤਰ੍ਹਾਂ 1 2 ਵਰਗੀਆਂ ਸਰਕੂਲਰ ਸੂਚੀਆਂ ਨੂੰ ਦਰਸਾਉਣਾ ਵੀ ਪੂਰੀ ਤਰ੍ਹਾਂ ਸੰਭਵ ਹੈ।


We emphasize that mathematical lists cannot be circular.

ਅਸੀਂ ਇਸ ਗੱਲ 'ਤੇ ਜ਼ੋਰ ਦਿੰਦੇ ਹਾਂ ਕਿ ਗਣਿਤਿਕ ਸੂਚੀਆਂ ਸਰਕੂਲਰ ਨਹੀਂ ਹੋ ਸਕਦੀਆਂ।


Lists as they appear with the block representation are commonly called linked lists.

ਬਲਾਕ ਪ੍ਰਸਤੁਤੀ ਦੇ ਨਾਲ ਦਿਖਾਈ ਦੇਣ ਵਾਲੀਆਂ ਸੂਚੀਆਂ ਨੂੰ ਆਮ ਤੌਰ 'ਤੇ ਲਿੰਕਡ ਸੂਚੀਆਂ ਕਿਹਾ ਜਾਂਦਾ ਹੈ।


The function get yields the value in the field of a block, where the field is given by its index in the block.

ਫੰਕਸ਼ਨ get ਇੱਕ ਬਲਾਕ ਦੇ ਖੇਤਰ ਵਿੱਚ ਮੁੱਲ ਦਿੰਦਾ ਹੈ, ਜਿੱਥੇ ਖੇਤਰ ਨੂੰ ਬਲਾਕ ਵਿੱਚ ਇਸਦੇ ਸੂਚਕਾਂਕ ਦੁਆਰਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ।


The function set replaces the value in the field of a block.

ਫੰਕਸ਼ਨ set ਇੱਕ ਬਲਾਕ ਦੇ ਖੇਤਰ ਵਿੱਚ ਮੁੱਲ ਨੂੰ ਬਦਲਦਾ ਹੈ।


The function release is given the address of an allocated block and deallocates this block and all blocks allocated after this block.

ਫੰਕਸ਼ਨ release ਨੂੰ ਇੱਕ ਅਲਾਟ ਕੀਤੇ ਬਲਾਕ ਦਾ ਪਤਾ ਦਿੱਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਇਸ ਬਲਾਕ ਅਤੇ ਇਸ ਬਲਾਕ ਤੋਂ ਬਾਅਦ ਅਲਾਟ ਕੀਤੇ ਗਏ ਸਾਰੇ ਬਲਾਕਾਂ ਨੂੰ ਡੀਅਲੋਕੇਟ ਕਰਦਾ ਹੈ।


We implement the heap with the following structure:

ਅਸੀਂ ਹੇਠਾਂ ਦਿੱਤੀ ਬਣਤਰ ਨਾਲ ਢੇਰ ਨੂੰ ਲਾਗੂ ਕਰਦੇ ਹਾਂ:


Note that we use the helper function check to ensure that only allocated addresses are used.

ਧਿਆਨ ਦਿਓ ਕਿ ਅਸੀਂ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਹੈਲਪਰ ਫੰਕਸ਼ਨ check ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ ਕਿ ਸਿਰਫ਼ ਅਲਾਟ ਕੀਤੇ ਪਤਿਆਂ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।


The exception address signals an address error that has occurred while allocating or accessing a block.

ਅਪਵਾਦ ਪਤਾ ਇੱਕ ਪਤੇ ਦੀ ਗਲਤੀ ਦਾ ਸੰਕੇਤ ਦਿੰਦਾ ਹੈ ਜੋ ਇੱਕ ਬਲਾਕ ਨੂੰ ਅਲਾਟ ਕਰਨ ਜਾਂ ਐਕਸੈਸ ਕਰਨ ਵੇਲੇ ਵਾਪਰਿਆ ਹੈ।


It is now straightforward to declare a function putlist: L(int) -> address allocating a linked block representation of a given list in the heap:

ਹੁਣ ਇੱਕ ਫੰਕਸ਼ਨ putlist: L(int) -> address ਦਾ ਐਲਾਨ ਕਰਨਾ ਸਿੱਧਾ ਹੈ ਜੋ ਢੇਰ ਵਿੱਚ ਦਿੱਤੀ ਗਈ ਸੂਚੀ ਦੀ ਇੱਕ ਲਿੰਕਡ ਬਲਾਕ ਪ੍ਰਸਤੁਤੀ ਨੂੰ ਅਲਾਟ ਕਰਦਾ ਹੈ:


We have getlist(putlist l) = l for every list l whose block representation fits into the heap.

ਸਾਡੇ ਕੋਲ ਹਰ ਸੂਚੀ l ਲਈ getlist(putlist l) = l ਹੈ ਜਿਸਦੀ ਬਲਾਕ ਪ੍ਰਸਤੁਤੀ ਢੇਰ ਵਿੱਚ ਫਿੱਟ ਹੁੰਦੀ ਹੈ।


Block representation works for constructor types in general.

ਬਲਾਕ ਪ੍ਰਸਤੁਤੀ ਆਮ ਤੌਰ 'ਤੇ ਨਿਰਮਾਤਾ ਕਿਸਮਾਂ ਲਈ ਕੰਮ ਕਰਦੀ ਹੈ।


If there are no arguments, we don’t need a block and use a negative number to identify the nullary constructor.

ਜੇਕਰ ਕੋਈ ਦਲੀਲ ਨਹੀਂ ਹੈ, ਤਾਂ ਸਾਨੂੰ ਇੱਕ ਬਲਾਕ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ ਅਤੇ ਨਲਰੀ ਨਿਰਮਾਤਾ ਦੀ ਪਛਾਣ ਕਰਨ ਲਈ ਇੱਕ ਨਕਾਰਾਤਮਕ ਨੰਬਰ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ।


For AB-trees we don’t need a tag field since there is only one constructor taking arguments.

AB-ਟ੍ਰੀਜ਼ ਲਈ ਸਾਨੂੰ ਇੱਕ ਟੈਗ ਖੇਤਰ ਦੀ ਲੋੜ ਨਹੀਂ ਹੈ ਕਿਉਂਕਿ ਇੱਥੇ ਸਿਰਫ਼ ਇੱਕ ਨਿਰਮਾਤਾ ਹੈ ਜੋ ਦਲੀਲਾਂ ਲੈਂਦਾ ਹੈ।


We now see that the block representation with no structure sharing is exponentially larger than the block representation with maximal structure sharing.

ਅਸੀਂ ਹੁਣ ਦੇਖਦੇ ਹਾਂ ਕਿ ਬਿਨਾਂ ਬਣਤਰ ਸਾਂਝਾਕਰਨ ਦੇ ਬਲਾਕ ਪ੍ਰਸਤੁਤੀ ਵੱਧ ਤੋਂ ਵੱਧ ਬਣਤਰ ਸਾਂਝਾਕਰਨ ਦੇ ਨਾਲ ਬਲਾਕ ਪ੍ਰਸਤੁਤੀ ਨਾਲੋਂ ਘਾਤਕ ਤੌਰ 'ਤੇ ਵੱਡੀ ਹੈ।


An OCaml interpreter stores the values of constructor types it computes with in a heap using a block representation.

ਇੱਕ OCaml ਇੰਟਰਪ੍ਰੈਟਰ ਇੱਕ ਬਲਾਕ ਪ੍ਰਸਤੁਤੀ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਇੱਕ ਢੇਰ ਵਿੱਚ ਨਿਰਮਾਤਾ ਕਿਸਮਾਂ ਦੇ ਮੁੱਲਾਂ ਨੂੰ ਸਟੋਰ ਕਰਦਾ ਹੈ ਜਿਸ ਨਾਲ ਇਹ ਗਣਨਾ ਕਰਦਾ ਹੈ।