IOG Academy
IOG Academy
  • Видео 207
  • Просмотров 246 489
Haskell Course - Lesson 19 - Applicative Functors and Effects
Repo: github.com/input-output-hk/haskell-course
Playlist: ruclips.net/p/PLNEK_Ejlx3x1D9Vq5kqeC3ZDEP7in4dqb
Canvas: iohk.instructure.com/enroll/3BAAGG
Outline:
0:00 - Introduction and Outline
0:50 - Why Applicative functors?
6:07 - Function application at the Functor level 🥇
19:04 - Being pure 😇
24:30 - The Applicative type class
29:45 - The Applicative laws
40:41 - 🎆 Programming with effects 🎆
50:24 - Extra functions and Applicative as defined in base
Просмотров: 803

Видео

Haskell Course - Lesson 18 - Functors
Просмотров 5189 месяцев назад
Repo: github.com/input-output-hk/haskell-course Playlist: ruclips.net/p/PLNEK_Ejlx3x1D9Vq5kqeC3ZDEP7in4dqb Canvas: iohk.instructure.com/enroll/3BAAGG You only need to prove one Functor law: www.schoolofhaskell.com/user/edwardk/snippets/fmap Outline: 0:00 - Introduction and Outline 1:13 - Abstracting the map function 6:10 - Abstracting the Functor type class 19:35 - Defining Functor instances 24...
Haskell Course - Lesson 17 - Semigroup and Monoid
Просмотров 49610 месяцев назад
Repo: github.com/input-output-hk/haskell-course Playlist: ruclips.net/p/PLNEK_Ejlx3x1D9Vq5kqeC3ZDEP7in4dqb Canvas: iohk.instructure.com/enroll/3BAAGG Proving Monoid (and Semigroup) laws: ruclips.net/user/liveV7673JaWXaA?si=tJGxBbmOh6j rtq&t=715 Outline: 0:00 - Introduction and Outline 0:46 - What does it mean to abstract a pattern? 2:48 - Why abstracting patterns (in general)? 3:58 - Teaser: Wh...
Haskell Course - Lesson 16 - Tips & Tricks
Просмотров 43611 месяцев назад
Repo: github.com/input-output-hk/haskell-course Playlist: ruclips.net/p/PLNEK_Ejlx3x1D9Vq5kqeC3ZDEP7in4dqb Canvas: iohk.instructure.com/enroll/3BAAGG Outline: 0:00 - Outline 0:26 - Tips: REPL 2:55 - Hackage 6:30 - Hoogle 9:25 - undefined 19:28 - Type Holes 32:14 - Section's Final Project
Haskell Course - Lesson 15 - Handling Errors
Просмотров 956Год назад
Repo: github.com/input-output-hk/haskell-course Playlist: ruclips.net/p/PLNEK_Ejlx3x1D9Vq5kqeC3ZDEP7in4dqb Canvas: iohk.instructure.com/enroll/3BAAGG Prelude Module: hackage.haskell.org/package/base-4.18.0.0/docs/Prelude.html Outline: 0:00 - Introduction and Outline 3:05 - There're always exceptions to the rule 5:23 - Speed-running exceptions with a dumb self-driving car (Exception, throwIO, ca...
Node course | Retiring a stake pool
Просмотров 218Год назад
The handbook for this tutorial is stored here: cardano-course.gitbook.io/cardano-course/handbook/create-a-stake-pool/retiring-a-stake-pool #cardano #course #stakepool
Haskell Course - Lesson 14 - Cabal and Language Extensions
Просмотров 1,1 тыс.Год назад
Repo: github.com/input-output-hk/haskell-course Playlist: ruclips.net/p/PLNEK_Ejlx3x1D9Vq5kqeC3ZDEP7in4dqb Canvas: iohk.instructure.com/enroll/3BAAGG Prelude Module: hackage.haskell.org/package/base-4.18.0.0/docs/Prelude.html Outline: 0:00 - Outline 1:04 - Introduction to Cabal 2:02 - cabal update 3:00 - cabal init 6:09 - Going over the .cabal file 11:48 - cabal build, cabal exec, and cabal run...
Node Course | Upgrading cardano node
Просмотров 470Год назад
In this video we learn how to upgrade cardano-node and cardano-cli on a production server.
Haskell Course - Lesson 13 - Modules
Просмотров 973Год назад
Repo: github.com/input-output-hk/haskell-course Playlist: ruclips.net/p/PLNEK_Ejlx3x1D9Vq5kqeC3ZDEP7in4dqb Canvas: iohk.instructure.com/enroll/3BAAGG Prelude Module: hackage.haskell.org/package/base-4.18.0.0/docs/Prelude.html Outline: 0:00 - Outline 1:07 - Importing Modules 9:40 - Managing our environment 13:47 - Managing our namespaces 24:02 - The Forest Game 31:47 - Creating our own modules 4...
Haskell Course - Lesson 12 - Installing Haskell Locally
Просмотров 1,5 тыс.Год назад
Repo: github.com/input-output-hk/haskell-course Playlist: ruclips.net/p/PLNEK_Ejlx3x1D9Vq5kqeC3ZDEP7in4dqb Canvas: iohk.instructure.com/enroll/3BAAGG Outline: 0:00 - Outline 1:39 - Installing GHCup and Haskell tooling 6:21 - Using GHCup 7:44 - Uninstalling everything 8:20 - Installing VSCode extensions 9:33 - Writing, compiling, and running programs 12:17 - Homework
PPP 041007 - Live Q&A Session
Просмотров 192Год назад
PPP 041007 - Live Q&A Session
Cardano-node course | How to create and answer polls using the cardano-cli
Просмотров 406Год назад
cardano-node 8.0.0 introduces the polling feature. A feature proposed and primarily developed by CF to run polls among stake pool operators to get their feedback on a variety of topics. On this video we demonstrate how to create and answer polls. The handbook for this tutorial is stored here: cardano-course.gitbook.io/cardano-course/handbook/module-7-cardano-governance/polls #cardano #course #p...
PPP 041002 - Developing a Dapp with MeshJS and PluTs (Typescript)
Просмотров 480Год назад
PPP 041002 - Developing a Dapp with MeshJS and PluTs (Typescript)
PPP 041003 - Developing smart contracts with PluTs (Typescript)
Просмотров 657Год назад
PPP 041003 - Developing smart contracts with PluTs (Typescript)
PPP 041001 - Introduction
Просмотров 399Год назад
Plutus Pioneer Program, Iteration 4, Lecture 10, Part 1 #course #plutus #cardano #haskell
PPP 041004 - Developing smart contracts with OpShin and PyCardano (Python)
Просмотров 708Год назад
Plutus Pioneer Program, Iteration 4, Lecture 10, Part 4 #course #plutus #cardano #haskell
PPP 041005 - Developing smart contracts with Plutarch (Haskell)
Просмотров 513Год назад
Plutus Pioneer Program, Iteration 4, Lecture 10, Part 5 #course #plutus #cardano #haskell
PPP 040909 - Q&A
Просмотров 148Год назад
PPP 040909 - Q&A
Q&A Live Session - Lesson 8
Просмотров 214Год назад
Q&A Live Session - Lesson 8
PPP 040907 - Testing our Stablecoin's scripts
Просмотров 184Год назад
PPP 040907 - Testing our Stablecoin's scripts
PPP 040908 - Homework
Просмотров 126Год назад
PPP 040908 - Homework
PPP 040906 - Burning Stablecoins and Liquidating positions
Просмотров 205Год назад
PPP 040906 - Burning Stablecoins and Liquidating positions
PPP 040905 - Minting Stablecoins
Просмотров 286Год назад
PPP 040905 - Minting Stablecoins
PPP 040904 - Deploying Stablecoin's Reference Scripts
Просмотров 250Год назад
PPP 040904 - Deploying Stablecoin's Reference Scripts
PPP 040903 - Stablecoin's Oracle
Просмотров 424Год назад
PPP 040903 - Stablecoin's Oracle
PPP 040902 - Using our Stablecoin Dapp UI
Просмотров 480Год назад
PPP 040902 - Using our Stablecoin Dapp UI
PPP 040901 - Creating our own Stablecoin Dapp
Просмотров 920Год назад
PPP 040901 - Creating our own Stablecoin Dapp
PPP 040805 Homework
Просмотров 147Год назад
PPP 040805 Homework
PPP 040804 - Trying it on the Testnet
Просмотров 246Год назад
PPP 040804 - Trying it on the Testnet
PPP 040802 - The Private Testnet
Просмотров 368Год назад
PPP 040802 - The Private Testnet

Комментарии

  • @lucialuziatalia
    @lucialuziatalia 10 часов назад

    Thank you for showing how to build the Cardano node without mainnet and also ensuring we know how to update to the latest upon first run.

  • @Gabrielrose.mp3
    @Gabrielrose.mp3 16 дней назад

    Thank you for these videos, Carlos!

  • @Gabrielrose.mp3
    @Gabrielrose.mp3 16 дней назад

    just a heads-up if you are here in 2025, you need to follow cardano-cli with conway or whatever version you are in. Currently conway. If you leave it blank as an example and type cardano-cli stake-address it will return an error. So be sure to include the name of the era you are in.

  • @Gabrielrose.mp3
    @Gabrielrose.mp3 18 дней назад

    Thank you so much for these videos! Happy new year 2025

  • @Gabrielrose.mp3
    @Gabrielrose.mp3 18 дней назад

    just adding this here for 2025, make sure to add conway in after cardano-cli and before whatever action you are taking. EG: cardano-cli conway transaction... to whatever command you enter.

  • @Gabrielrose.mp3
    @Gabrielrose.mp3 18 дней назад

    update for anyone watching this in 2025, if you are stuck at cardano-cli stake-address and getting an error, you just need to add the current version before stake-address. At the time of this writing it is cardano-cli conway stake-address key-gen... and so on. you will need to add conway to each command to specify where the address is built.

  • @nathanryan12
    @nathanryan12 Месяц назад

    Very nice!

  • @360eventdao7
    @360eventdao7 Месяц назад

    Thank you Robertino, when do we get the next lecture ?

  • @itsfarseen
    @itsfarseen Месяц назад

    The last example was very vague. I don't even think that's possible.

  • @trumpetfish1
    @trumpetfish1 Месяц назад

    any tips to get around this error? cabal build cardano-cli Warning: Requested index-state 2023-01-26T18:00:00Z is newer than 'cardano-haskell-packages'! Falling back to older state (2023-01-26T17:52:04Z). Resolving dependencies... Error: cabal: Could not resolve dependencies: [__0] trying: cardano-api-1.35.5 (user goal) [__1] trying: base-4.14.3.0/installed-4.14.3.0 (dependency of cardano-api) [__2] trying: cardano-tracer-1.35.5 (user goal) [__3] next goal: libsystemd-journal (dependency of cardano-tracer) [__3] rejecting: libsystemd-journal-1.4.6.0 (conflict: base==4.14.3.0/installed-4.14.3.0, libsystemd-journal => base^>=4.16 || ^>=4.17 || ^>=4.18 || ^>=4.19 || ^>=4.20) [__3] skipping: libsystemd-journal-1.4.5.1 (has the same characteristics that caused the previous version to fail: excludes 'base' version 4.14.3.0) [__3] rejecting: libsystemd-journal-1.4.5 (conflict: pkg-config package libsystemd>=209, not found in the pkg-config database) [__3] rejecting: libsystemd-journal-1.4.4 (conflict: base==4.14.3.0/installed-4.14.3.0, libsystemd-journal => base>=4.6 && <4.13) [__3] skipping: libsystemd-journal-1.4.3, libsystemd-journal-1.4.2, libsystemd-journal-1.4.1, libsystemd-journal-1.4.0, libsystemd-journal-1.3.4, libsystemd-journal-1.3.3, libsystemd-journal-1.3.1, libsystemd-journal-1.3.0, libsystemd-journal-1.2.0, libsystemd-journal-1.1.0, libsystemd-journal-1.0.0 (has the same characteristics that caused the previous version to fail: excludes 'base' version 4.14.3.0) [__3] fail (backjumping, conflict set: base, cardano-tracer, libsystemd-journal) After searching the rest of the dependency tree exhaustively, these were the goals I've had most trouble fulfilling: cardano-api, base, libsystemd-journal, cardano-tracer Try running with --minimize-conflict-set to improve the error message.

  • @rayanahmad9134
    @rayanahmad9134 2 месяца назад

    i'm having error related to docker can anyone tell me about the error: [10333 ms] error during connect: in the default daemon configuration on Windows, the docker client must be run with elevated privileges to connect: Get "%2F%2F.%2Fpipe%2Fdocker_engine/v1.47/version": open //./pipe/docker_engine: Access is denied. in vs code while i'm clicking on Reopen in container it is showing this error: Docker returned an error. Make sure the Docker daemon is running.

  • @360eventdao7
    @360eventdao7 2 месяца назад

    Awesome lecture , thank you.

    • @iogacademy
      @iogacademy 2 месяца назад

      Glad you liked it! 😃 - Robertino

  • @360eventdao7
    @360eventdao7 2 месяца назад

    Great lecture Roberto

  • @georgetsironis9577
    @georgetsironis9577 2 месяца назад

    I meet some issues with npm start. The site opens but in not connected to my nami wallet. Should I maybe run npm run build after npm install? Is something wrong with nami extension?

  • @Timjstewart
    @Timjstewart 3 месяца назад

    Your teaching skills are excellent! Thank you!

    • @iogacademy
      @iogacademy 2 месяца назад

      Thank you so much! 😄 - Robertino

  • @eezyconcept
    @eezyconcept 3 месяца назад

    What if the tokens were is different address? lets say token were in Bob Address and the signed by Alice pkh now to burn token if Alice burn token will it burn from Bob's address? or token have to be in same wallet?

  • @tommysullivan
    @tommysullivan 3 месяца назад

    If I am not mistaken, Idris is able to constrain and prove associativity of operators, its type system is more powerful than Haskell

  • @justabarrelbomb4472
    @justabarrelbomb4472 3 месяца назад

    Robertino, Are you argentinian/italian? Your accent sounds very familiar to me, either italian or rioplatense

    • @iogacademy
      @iogacademy 2 месяца назад

      I'm Argentinean, from Córdoba. Good ears! 😂

    • @justabarrelbomb4472
      @justabarrelbomb4472 2 месяца назад

      @@iogacademy Buenos Aires, feliz de encontrar a un compatriota!

  • @360eventdao7
    @360eventdao7 3 месяца назад

    Great lecture Robertino, I appreciate all you do

  • @georgetsironis9577
    @georgetsironis9577 3 месяца назад

    In the previous video I chose to set up the environment locally. Can I deploy this demo in my pc instead of using laptop?

  • @georgetsironis9577
    @georgetsironis9577 3 месяца назад

    For anyone interested there is a fourth iteration available in IOG Academy.

  • @krunalkathikar2154
    @krunalkathikar2154 4 месяца назад

    what is the type constructor

  • @adriansinclair5323
    @adriansinclair5323 4 месяца назад

    Does this apply to the latest cardano node 9.1.x installation ?

    • @Gabrielrose.mp3
      @Gabrielrose.mp3 18 дней назад

      I am using it as a guide for 10.1.3 and it mostly is the same. Maybe a few things that need to be changed, but should be obvious when doing it.

  • @WIMS-Cardano-ud5rw
    @WIMS-Cardano-ud5rw 4 месяца назад

    Lovely

  • @360eventdao7
    @360eventdao7 5 месяцев назад

    Thank you Roberto for your well detailed lectures

  • @krunalkathikar2154
    @krunalkathikar2154 6 месяцев назад

    you are the 1 st who explains what is mean by pattern and i am thankful of you for directly coming to the point

  • @TankorSmash
    @TankorSmash 6 месяцев назад

    This is very high quality. Using notebooks is a nice touch. Thank you for putting this out!

  • @AndreiGeorgescu-j9p
    @AndreiGeorgescu-j9p 6 месяцев назад

    You really confused lifting and application. fmap is lifting and should be used most of the time. <$> is application and should only really be used in imperative code aka inside of do notation

    • @AndreiGeorgescu-j9p
      @AndreiGeorgescu-j9p 4 месяца назад

      @@Byron1694 one is a function and the other is an operator. They're used in entirely different ways. Lifting is about taking a function and turning it into another function which allows for function composition, which is the whole point of fp. Application is applying arguments to functions which is imperative

  • @360eventdao7
    @360eventdao7 6 месяцев назад

    The canvas link is broken

  • @lemillion1918
    @lemillion1918 6 месяцев назад

    Great

  • @ryanwdavies1
    @ryanwdavies1 7 месяцев назад

    I would like to suggest that this guide would be better with a different zoom level and perhaps withut live stream of the person

  • @requiemOde2Black
    @requiemOde2Black 8 месяцев назад

    Any advice for a beginner? I was the first in my school to complete our Python ceaser cypher coursework and am know interested in learning Plutus for Cardano smart contracts. I was recommended this course as a beginner to Haskell however I am not sure whether I should be learning more basics. For example, the third question on the homework is an extremely simple problem, but requires knowledge of receiving inputs in Haskell and then to call the function. Code like 'putStrLn "Enter the radius of the circle:'. Which contains syntax we haven't even learnt yet

    • @requiemOde2Black
      @requiemOde2Black 8 месяцев назад

      I decided to continue and have noticed that the lessons from episode 2 are needed to answer homework from episode 01

  • @hericklenin
    @hericklenin 8 месяцев назад

    Hola, tu tienes lecciones de haskell en espanol?

  • @erezjacob6804
    @erezjacob6804 8 месяцев назад

    Hey Robertino, thanks for another great lesson!

    • @iogacademy
      @iogacademy 8 месяцев назад

      Thank you, Erez!! 😄- Robertino

  • @dr-Jonas-Birch
    @dr-Jonas-Birch 9 месяцев назад

    Great stuff. What IDE and color scheme are you using? And what is a "cell"? JB

    • @iogacademy
      @iogacademy 8 месяцев назад

      Glad you liked it! I use Jupyter Notebook with a Haskell Kernel for these lessons. It's not a full-blown IDE, but it's great to present! :D

    • @dr-Jonas-Birch
      @dr-Jonas-Birch 8 месяцев назад

      @@iogacademy Thanks for the tip. JB

  • @erezjacob6804
    @erezjacob6804 10 месяцев назад

    Great lesson!

    • @iogacademy
      @iogacademy 9 месяцев назад

      Glad you liked it!

  • @AndreiGeorgescu-j9p
    @AndreiGeorgescu-j9p 10 месяцев назад

    Custom Typeclasses are used often... The entire point of them is extension on cases, that's why they exist

  • @AndreiGeorgescu-j9p
    @AndreiGeorgescu-j9p 10 месяцев назад

    Your replace method could be done with one case by using record syntax to just grab the tag

  • @AndreiGeorgescu-j9p
    @AndreiGeorgescu-j9p 10 месяцев назад

    You should be using newtypes for the record types. You should never be directly using int or string

  • @AndreiGeorgescu-j9p
    @AndreiGeorgescu-j9p 10 месяцев назад

    Should've used `(+) . const 1` in the for length. Better would've been using fmap. Real question is why isn't there a foldr'

  • @dragonzed
    @dragonzed 10 месяцев назад

    LOOOOL you missed the opportunity to ask for $99.99

  • @jamessarlock4930
    @jamessarlock4930 10 месяцев назад

    Thanks for the inspiration guys. i have stack to a point... when i try to copy with : cp ./ cardano-node ~/.local.bin/ i get this error: cp: cannot create regular file '/home/sok/.local.bin/': Not a directory any help will be appreciated... or even a link to a help forum will do the job . thanks

    • @Gabrielrose.mp3
      @Gabrielrose.mp3 18 дней назад

      You need to CD to top level, then mkdir /.local/bin then retry.

  • @JuanTxuThreeFour
    @JuanTxuThreeFour 11 месяцев назад

    Great to have Robertino back!!!!!

    • @iogacademy
      @iogacademy 11 месяцев назад

      Thank you, Juan!! Glad to be back! 😄

  • @t.hhunfeld4321
    @t.hhunfeld4321 11 месяцев назад

    --pool-margen 0.05 \

  • @suzuranguru9673
    @suzuranguru9673 Год назад

    You are so funny :DDD catched me off guard

  • @jfl1014
    @jfl1014 Год назад

    thanks a lot man!

  • @jfl1014
    @jfl1014 Год назад

    What I don't understand totally is that I thought there was the need of another computer to generate keys, one that is not connected to the internet ?

    • @Gabrielrose.mp3
      @Gabrielrose.mp3 19 дней назад

      I believe for the testnet purposes this is ok. Future videos will probably describe key-pairs for the mainnet and the air gap private keys.

  • @daVinciRobotSurgeon
    @daVinciRobotSurgeon Год назад

    You stopped doing step-by-step and lost me at 10:45 when you said "I have already installed Cardano node and I have produced a few things over here."

  • @johnnuy
    @johnnuy Год назад

    This is certainly a reversal of thought compared to the more recent object oriented languages that use something like stream.take(10).tail().filter(x -> x > 25).any(even). If the result you're looking for is simply a Bool, will this style of function composition resolve the functions for every element at each step, or will it compose a function that is applied iteratively to each element of the list, so if the first element matches all conditions then it won't continue to evaluate the other elements?

    • @iogacademy
      @iogacademy 11 месяцев назад

      The latter. Haskell is a Lazy language. It will only evaluate what's needed. So, you could check if a list of 1 billion elements *2 contains an even number, and it'll evaluate only the first number. In cases you can short-circuit, Haskell is more efficient than strict languages. That's why, for example, compiler developers have to explicitly add checks at compile-time to simulate what Haskell does and avoid (as much as they can) evaluating things that they won't use.

  • @andrewvoron4490
    @andrewvoron4490 Год назад

    for those who stucked with lucid /usr/bin/env: 'node': Permission denied error, just issue chown -R root:root lucid on lucid (and lucid-ref-script) folders