<p><strong>There are many reasons</strong>. For example:</p>
<ul>
<li>You need tooling for the communication between the on-chain and the off-chain code and many other tasks.</li>
<li>You need tooling that generates code where the on-chain code is quite specific. You can't use the regular machine code that the Haskell compiler gives you and run it on the blockchain.</li>
<li>With a language so versatile as Haskell, you can write extremely complex code. This is great in some settings, but with smart contracts, it increases the chances of error.</li>
</ul>
<p><strong>Those are some of the issues that you don't have to deal with because of Plutus</strong>:</p>
<ul>
<li>Plutus provides a lot of infrastructure developers would have to create themselves if they'd just use naked Haskell. So it saves effort and makes it easier to develop smart contracts.</li>
<li>It limits the library interfaces available to developers making it straightforward for them to write secure and performant code.</li>
<li>In the blockchain, you want a code format that is designed to be easy to reason about, closely implements the mathematical specification, and allows you to be confident that it's correctly implemented. That's why we have Plutus Core.</li>
</ul>
<p>Sources:</p>
<ul>
<li><a href="https://youtu.be/uZL9SBNfS-0?t=367" rel="nofollow noreferrer">IOHK Language Architect - Manuel Chakravarty Interview</a></li>
<li><a href="https://www.youtube.com/watch?v=xWlUrq0y4JY" rel="nofollow noreferrer">Keynote talk by Manuel Chakravarty: Plutus - Functional Smart Contracts on Cardano</a></li>
</ul>

CC BY-SA 4.0
2022-07-15T18:09:39.737Z
awesome answer, I would also cite the need for reduced set of instructions so that it is possible to reduce the effective size of the serialized smart contract on-chain
Michele Nuzzi
CC BY-SA 4.0
2022-07-15T18:48:21.777Z
Do you have a source for that?
Fermat
CC BY-SA 4.0
2022-07-15T16:24:25.967Z
2022-08-02T17:25:38.660Z
2022-08-02T17:25:38.660Z
Robertino
<p>I can think of two major reasons as to why Cardano chose a strongly-typed functional language for it's Blockchain:</p>
<ol>
<li>Strongly-typed - because as the capabilities of the Blockchain and scripts become more powerfull, type safety is a must-have to ensure determinism and security.</li>
<li>Functional - because it adapts very well with the UTXO design.</li>
</ol>
<p>So my question is doesn't Haskell already fit the bill? Why is the Plutus library, its intermediary representations and Plutus Core even needed?</p>

CC BY-SA 4.0
2022-07-15T08:04:27.317Z
1. Haskell is a lazy language, this allows for infinite data structures. Onchain this is a hazard since it opens the door to attacks, you want a strict language to keep things deterministic.

For more hava a look at https://youtu.be/xWlUrq0y4JY?t=790
Fermat
<plutus><haskell><blockchain>
Why not just simply use Haskell instead of Plutus?
# Why not just simply use Haskell instead of Plutus?

(Asked by: username_0 on 2022-07-15)

I can think of two major reasons as to why Cardano chose a strongly-typed functional language for it's Blockchain:

1. Strongly-typed - because as the capabilities of the Blockchain and scripts become more powerfull, type safety is a must-have to ensure determinism and security.
2. Functional - because it adapts very well with the UTXO design.

So my question is doesn't Haskell already fit the bill? Why is the Plutus library, its intermediary representations and Plutus Core even needed?

**Tags:** plutus, haskell, blockchain
> **Comments:**
> **username_1**: 1. Haskell is a lazy language, this allows for infinite data structures. Onchain this is a hazard since it opens the door to attacks, you want a strict language to keep things deterministic.  For more hava a look at https://youtu.be/xWlUrq0y4JY?t=790  

---

## 1 answers

### Answer by username_2 on 2022-07-15. Score: 8 | Accepted answer

**There are many reasons**. For example:

* You need tooling for the communication between the on-chain and the off-chain code and many other tasks.
* You need tooling that generates code where the on-chain code is quite specific. You can't use the regular machine code that the Haskell compiler gives you and run it on the blockchain.
* With a language so versatile as Haskell, you can write extremely complex code. This is great in some settings, but with smart contracts, it increases the chances of error.

**Those are some of the issues that you don't have to deal with because of Plutus**:

* Plutus provides a lot of infrastructure developers would have to create themselves if they'd just use naked Haskell. So it saves effort and makes it easier to develop smart contracts.
* It limits the library interfaces available to developers making it straightforward for them to write secure and performant code.
* In the blockchain, you want a code format that is designed to be easy to reason about, closely implements the mathematical specification, and allows you to be confident that it's correctly implemented. That's why we have Plutus Core.

Sources:

* [IOHK Language Architect - Manuel Chakravarty Interview](https://youtu.be/uZL9SBNfS-0?t=367)
* [Keynote talk by Manuel Chakravarty: Plutus - Functional Smart Contracts on Cardano](https://www.youtube.com/watch?v=xWlUrq0y4JY)

> **Comments:**
> **username_3**: awesome answer, I would also cite the need for reduced set of instructions so that it is possible to reduce the effective size of the serialized smart contract on-chain  
> **username_1**: Do you have a source for that?  

---

