This document discusses using GHCi, Haskell's interactive environment, more effectively. It provides tips on allowing multi-line definitions, showing types, executing Haskell code, and setting up GHCi. It also covers loading and reloading modules, compiled vs interpreted code, controlling GHCi scope, debugging basics like breakpoints, and advanced techniques like time travel debugging.
My talk at BarCamp London 5: An introduction to Cocoa development and how web developers can cheat.
Source code to go with this presentation is available here: http://georgebrock.com/conferences/barcamplondon5
Basic c++ 11/14 for python programmersJen Yee Hong
Â
A short list of some common python programming patterns and their C++ equivalents. This can help programmers learn C++ in a more efficient way if he or she already knows Python.
Part of this material is used for internal training of Appier Inc, one of the leading artificial intelligence company in Asia.
Thank Appier Inc. for allowing me to share this.
In functional programming, words from Category Theory are thrown around, but how useful are they really?
This session looks at applications of monoids specifically and how using their algebraic properties offers a solid foundation of reasoning in many types of business domains and reduces developer error as computational context complexity increases.
This will provide a tiny peak at Category Theory's practical uses in software development and modeling. Code examples will be in Haskell and Scala, but monoids could be constructed in almost any language by software craftsmen and women utilizing higher orders of reasoning to their code.
Asynchronous single page applications without a line of HTML or Javascript, o...Robert Schadek
Â
AngularJS, together with Node.js, is an extremely powerful combination for building single page applications. Unfortunately, its development requires writing HTML and Javascript, which is tedious and error prone. By using vibe.d, HTML is no longer necessary, and the developers can use the full power of a static-typed language for the development of the backend. Substituting Javascript with Typescript in addition to a little bit of CTFE D magic then removes the need for redundant data type declarations, and makes everything statically typed. At the end of the talk, the attendee will have witnessed the creation of a statically typed, asynchronous single page application that required little extra typing than its dynamically typed equivalent. Additionally, the attendees will be motivated to explore the presented combination of frameworks as a viable desktop application UI framework.
C Programming Training in Ambala ! Batra Computer Centrejatin batra
Â
Batra Computer Centre is An ISO certified 9001:2008 training Centre in Ambala.
We Provide C Programming Training in Ambala. BATRA COMPUTER CENTRE provides best training in C, C++, S.E.O, Web Designing, Web Development and So many other courses are available.
My talk at BarCamp London 5: An introduction to Cocoa development and how web developers can cheat.
Source code to go with this presentation is available here: http://georgebrock.com/conferences/barcamplondon5
Basic c++ 11/14 for python programmersJen Yee Hong
Â
A short list of some common python programming patterns and their C++ equivalents. This can help programmers learn C++ in a more efficient way if he or she already knows Python.
Part of this material is used for internal training of Appier Inc, one of the leading artificial intelligence company in Asia.
Thank Appier Inc. for allowing me to share this.
In functional programming, words from Category Theory are thrown around, but how useful are they really?
This session looks at applications of monoids specifically and how using their algebraic properties offers a solid foundation of reasoning in many types of business domains and reduces developer error as computational context complexity increases.
This will provide a tiny peak at Category Theory's practical uses in software development and modeling. Code examples will be in Haskell and Scala, but monoids could be constructed in almost any language by software craftsmen and women utilizing higher orders of reasoning to their code.
Asynchronous single page applications without a line of HTML or Javascript, o...Robert Schadek
Â
AngularJS, together with Node.js, is an extremely powerful combination for building single page applications. Unfortunately, its development requires writing HTML and Javascript, which is tedious and error prone. By using vibe.d, HTML is no longer necessary, and the developers can use the full power of a static-typed language for the development of the backend. Substituting Javascript with Typescript in addition to a little bit of CTFE D magic then removes the need for redundant data type declarations, and makes everything statically typed. At the end of the talk, the attendee will have witnessed the creation of a statically typed, asynchronous single page application that required little extra typing than its dynamically typed equivalent. Additionally, the attendees will be motivated to explore the presented combination of frameworks as a viable desktop application UI framework.
C Programming Training in Ambala ! Batra Computer Centrejatin batra
Â
Batra Computer Centre is An ISO certified 9001:2008 training Centre in Ambala.
We Provide C Programming Training in Ambala. BATRA COMPUTER CENTRE provides best training in C, C++, S.E.O, Web Designing, Web Development and So many other courses are available.
New language from Google, static safe compiler, with GC and as fast as C++ or Java, syntax simpler then Python - 2 hour-long tutorial and you can start code.
In this talk Serhii will talk about Go, also known as Golang â an open source language developed at Google and used in production by companies such as Docker, Dropbox, Facebook and Google itself. Go is now heavily used as a general-purpose programming language thatâs a pleasure to use and maintain. This introductory talk contains many live demos of basic language concepts, concurrency model, simple HTTP-based endpoint implementation and, of course, tests using build-in framework. This presentation will be interesting for backend engineers and DevOps to understand why Go had become so popular and how it might help to build robust and maintanable services.
Agenda of the presentation:
1. Go is not C, not Java, not anything
2. Rob Pike argument
3. Main ideas and basics
4. Concurrency model
5. Tools
6. Issues
Empty Base Class Optimisation, [[no_unique_address]] and other C++20 AttributesBartlomiej Filipek
Â
Those are the slides from my presentation for our local C++ Cracow User Grup. This time I described what is empty base class optimisation, how it affects unique_ptr and also how can we simplify the code with C++20's new attribute: [[no_unique_address]].
Capture the Flag (CTF) are information security challenges. They are fun, but they also provide a opportunity to practise for real-world security challenges.
In this talk we present the concept of CTF. We focus on some tools used by our team, which can also be used to solve real-world problems.
New language from Google, static safe compiler, with GC and as fast as C++ or Java, syntax simpler then Python - 2 hour-long tutorial and you can start code.
In this talk Serhii will talk about Go, also known as Golang â an open source language developed at Google and used in production by companies such as Docker, Dropbox, Facebook and Google itself. Go is now heavily used as a general-purpose programming language thatâs a pleasure to use and maintain. This introductory talk contains many live demos of basic language concepts, concurrency model, simple HTTP-based endpoint implementation and, of course, tests using build-in framework. This presentation will be interesting for backend engineers and DevOps to understand why Go had become so popular and how it might help to build robust and maintanable services.
Agenda of the presentation:
1. Go is not C, not Java, not anything
2. Rob Pike argument
3. Main ideas and basics
4. Concurrency model
5. Tools
6. Issues
Empty Base Class Optimisation, [[no_unique_address]] and other C++20 AttributesBartlomiej Filipek
Â
Those are the slides from my presentation for our local C++ Cracow User Grup. This time I described what is empty base class optimisation, how it affects unique_ptr and also how can we simplify the code with C++20's new attribute: [[no_unique_address]].
Capture the Flag (CTF) are information security challenges. They are fun, but they also provide a opportunity to practise for real-world security challenges.
In this talk we present the concept of CTF. We focus on some tools used by our team, which can also be used to solve real-world problems.
Large-scale C++ development is tough business, and so is grokking and improving OOo's approximately 6 million lines of code. The author will share the accumulated knowledge of Sun's OOo development team, touching areas such as:
* dependency management: how to architect for encapsulation
* tools for working on the code: IDE/editor review, (semi)-automatic code transformations and refactorings, debuggers
* patterns: the most frequent design patterns and their incarnations
* helpers: the what and the where of helper functionality
* recommended readings: literature, links to OOo resources (API documentation, coding guidelines), mailing lists and news groups
This session should be suitable for all levels of C++ programmers, that want to become familiar with OOo's way of doing things in C++.
Starting with v4, modules hold a promise for changing how Redis is used and developed for. Enabling custom data types and commands, Redis Modules build upon and extend the core functionality to handle any use case.
The video of the webinar given with these slides is at: https://youtu.be/EglSYFodaqw
Natural Language Processing with CNTK and Apache Spark with Ali ZaidiDatabricks
Â
Apache Spark provides an elegant API for developing machine learning pipelines that can be deployed seamlessly in production. However, one of the most intriguing and performant family of algorithms â deep learning â remains difficult for many groups to deploy in production, both because of the need for tremendous compute resources and also because of the inherent difficulty in tuning and configuring.
In this session, youâll discover how to deploy the Microsoft Cognitive Toolkit (CNTK) inside of Spark clusters on the Azure cloud platform. Learn about the key considerations for administering GPU-enabled Spark clusters, configuring such workloads for maximum performance, and techniques for distributed hyperparameter optimization. Youâll also see a real-world example of training distributed deep learning learning algorithms for speech recognition and natural language processing.Microsoft Cognitive Toolkit (CNTK) inside of Spark clusters on the Azure cloud platform. Weâll discuss the key considerations for administering GPU-enabled Spark clusters, configuring such workloads for maximum performance, and techniques for distributed hyperparameter optimization. Weâll illustrate a real-world example of training distributed deep learning learning algorithms for speech recognition and natural language processing.
[Defcon24] Introduction to the Witchcraft Compiler CollectionMoabi.com
Â
With this presentation, we take a new approach to reverse engineering. Instead of attempting to decompile code, we seek to undo the work of the linker and produce relocatable files, the typical output of a compiler. The main benefit of the later technique over the former being that it does work. Once achieved universal code âreuseâ by relinking those relocatable objects as arbitrary shared libraries, we'll create a form of binary reflection, add scripting capabilities and in memory debugging using a JIT compiler, to attain automated API prototyping and annotation, which, we will argue, constitutes a primary form of binary code self awareness. Finally, we'll see how abusing the dynamic linker internals shall elegantly solve a number of complex tasks for us, such as calling a given function within a binary without having to craft a valid input to reach it.
The applications in terms of vulnerability exploitation, functional testing, static analysis validation and more generally computer wizardry being tremendous, we'll have fun demoing some new exploits in real life applications, and commit public program profanity, such as turning PEs into ELFs, functional scripting of sshd in memory, stealing crypto routines without even disassembling them, among other things that were never supposed to work. All the above techniques have been implemented into the Wichcraft Compiler Collection, to be released as proper open source software (MIT/BSD-2 licenses) exclusively at DEF CON 24.
Jonathan Brossard is a computer whisperer from France, although he's been living in Brazil, India, Australia and now lives in San Francisco. For his first conference at DEF CON 16, he hacked Microsoft Bitlocker, McAffee Endpoint and a fair number of BIOS Firmwares. During his second presentation at DEF CON 20, he presented Rakshasa, a BIOS malware based on open source software, the MIT Technology review labeled "incurable and undetectable".
This year will be his third DEF CON ... Endrazine is also known in the community for having run the Hackito Ergo Sum and NoSuchCon conferences in France, participating to the Shakacon Program Committee in Hawaii, and authoring a number of exploits over the past decade. Including the first remote Windows 10 exploit and several hardcore reverse engineering tools and whitepapers. Jonathan is part of the team behind MOABI.COM, and acts as the Principal Engineer of Product Security at Salesforce.
Twitter: @endrazine
Facebook: toucansystem
https://moabi.com
Fuzzing is a software testing technique that involves providing invalid, unexpected, or random data to the inputs of a computer program. The presentation covers types of fuzzers and describes how they work. We will write and run a real fuzzer. Also it shows how fuzzers can guess correct CRC checksums, help with regression testing and find logical bugs in programs. Finally, it summarizes fuzzing usage at Google.
Introduction to Flutter - truly crossplatform, amazingly fastBartosz Kosarzycki
Â
Intro: Flutter meaning rapid variation of electronic signal recently became Dart's framework name for mobile development. This presentation is a short introduction into a cross-platform solution covering iOS/Android. During this 45 minute period you'll learn what is flutter, where it came from and what it's for.
How we use functional programming to find the bad guys @ Build Stuff LT and U...Richard Minerich
Â
Traditional approaches in anti-money laundering involve simple matching algorithms and a lot of human review. However, in recent years this approach has proven to not scale well with the ever increasingly strict regulatory environment. We at Bayard Rock have had much success at applying fancier approaches, including some machine learning, to this problem. In this talk I walk you through the general problem domain and talk about some of the algorithms we use. Iâll also dip into why and how we leverage typed functional programming for rapid iteration with a small team in order to out-innovate our competitors.
Accelerate your Kubernetes clusters with Varnish CachingThijs Feryn
Â
A presentation about the usage and availability of Varnish on Kubernetes. This talk explores the capabilities of Varnish caching and shows how to use the Varnish Helm chart to deploy it to Kubernetes.
This presentation was delivered at K8SUG Singapore. See https://feryn.eu/presentations/accelerate-your-kubernetes-clusters-with-varnish-caching-k8sug-singapore-28-2024 for more details.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Â
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Â
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as âpredictable inferenceâ.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Â
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Â
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Generating a custom Ruby SDK for your web service or Rails API using Smithyg2nightmarescribd
Â
Have you ever wanted a Ruby client API to communicate with your web service? Smithy is a protocol-agnostic language for defining services and SDKs. Smithy Ruby is an implementation of Smithy that generates a Ruby SDK using a Smithy model. In this talk, we will explore Smithy and Smithy Ruby to learn how to generate custom feature-rich SDKs that can communicate with any web service, such as a Rails JSON API.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Â
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
Â
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties â USA
Expansion of bot farms â how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks â Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
Â
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. Whatâs changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Essentials of Automations: Optimizing FME Workflows with ParametersSafe Software
Â
Are you looking to streamline your workflows and boost your projectsâ efficiency? Do you find yourself searching for ways to add flexibility and control over your FME workflows? If so, youâre in the right place.
Join us for an insightful dive into the world of FME parameters, a critical element in optimizing workflow efficiency. This webinar marks the beginning of our three-part âEssentials of Automationâ series. This first webinar is designed to equip you with the knowledge and skills to utilize parameters effectively: enhancing the flexibility, maintainability, and user control of your FME projects.
Hereâs what youâll gain:
- Essentials of FME Parameters: Understand the pivotal role of parameters, including Reader/Writer, Transformer, User, and FME Flow categories. Discover how they are the key to unlocking automation and optimization within your workflows.
- Practical Applications in FME Form: Delve into key user parameter types including choice, connections, and file URLs. Allow users to control how a workflow runs, making your workflows more reusable. Learn to import values and deliver the best user experience for your workflows while enhancing accuracy.
- Optimization Strategies in FME Flow: Explore the creation and strategic deployment of parameters in FME Flow, including the use of deployment and geometry parameters, to maximize workflow efficiency.
- Pro Tips for Success: Gain insights on parameterizing connections and leveraging new features like Conditional Visibility for clarity and simplicity.
Weâll wrap up with a glimpse into future webinars, followed by a Q&A session to address your specific questions surrounding this topic.
Donât miss this opportunity to elevate your FME expertise and drive your projects to new heights of efficiency.
Empowering NextGen Mobility via Large Action Model Infrastructure (LAMI): pav...
Â
GHCi: More Awesome Than You Thought
1. -- GHCi --
More Awesome
Than You (I?) Thought
Richard Minerich
Senior Researcher at Bayard Rock
@Rickasaurus
2. Noob Answers for
Noob Questions
How do I allow multi-line definitions?
Wrap it in â:{ ⊠:}â or â:set +mâ
Why doesnât it show the type of my result?
â:set +tâ will enable type info.
Why wonât my Haskell code execute in GHCi?
GHCi uses the monad âletâ syntax.
How do I specify the type of something?
Follow it with â:: typeâ (e.g x = 5 :: Int)
3. Setup for this talk
Sublime Text 2 with
- SublimeHaskell
- SublimeREPL (head)
- Tabs to Spaces on
Haskell Platform (2012.4.0.0) with
aeson, haskell-src-exts, haddock,
ghc-mod, stylish-haskell, haskell-docs
4. SublimeREPL
SublimeREPL (as of last week) will now:
- Intelligently remove extra whitespace in
front of nested functions
- Prepends âlet â to functions sent to the REPL
and indents the remainder (as needed)
- Automatically wraps multi-line functions with
the new block syntax :{ .. :}
5. Haskell for Scripting
-- script.hs --
#!/usr/bin/env runhaskell
main = putStrLn âHello, or somethingâŠâ
On Windows:
runhaskell script.hs
On Posix:
./script.hs
7. Play with Language Flags
{-# LANGUAGE NoMonomorphismRestriction #-}
Vs.
:set âXNoMonomorphismRestriction
Vs.
(in latest Haskell Platform)
:seti âXNoMonomorphismRestriction
8. Loading Modules
By default module Dir.Module is Dir/Module.hs
:load Dir.Module Load compiled if exists
:load *Dir.Module Load interpreted forced
:reload Reloads target set
:show modules List loaded modules
9. Compiled vs. Interpreted
Compiled Interpreted
~10x Faster Execution ~2x Faster Load
Dependencies must be
compiled
Dependencies compiled
or interpreted
Only exports available Exports or full scope
â:! ghc âc Module.hsâ Noop
10. Controlling GHCi Scope
:show imports
Shows whatâs in scope
:module â Dir1.Module1 âŠ
Remove â./Dir1/Module1.hsâ from scope
:module + Dir1.Module1 *Dir2.Module2 âŠ
Open exports from â./Dir1/Module1.hsâ
Open full scope from â./Dir2/Module2.hsâ
Standard import syntax applies as well
11. Your Eyes and Ears
:browse Module - Shows a moduleâs exports
:browse *Module â Shows full Module scope
:show bindings â List bound variables with type
:type <expr> - Type information for an expr
:info <name> - Extended information
:print <id> - Print without forced evaluation
:force <id> - Print with forced evaluation
12. GHCi Funny Business
GHCi is a monad, monad syntax applies (kind of)
Bindings go away after â:loadâ or â:reloadâ
Type defaults (are strange)
Itâs thunks all the way down
âprintâ vs â:printâ vs â:sprintâ vs â:forceâ
13. Things to know about Debugging
All the standard stuff:
- Breakpoints, Break on Exception, Stepping
And some fancy stuff:
- Time Travel, Subexpression Breakpoints
But, some oddities (coming from other langs):
- Scope, Execution Ordering, :Print Breakpoints
16. How the heck do I trace?
Remember, Haskell is lazy. So be thoughtful:
- Break inside, near the end
- Leverage assertions with error
(import Control.Exception (assert))
- Give BangPatterns a go
- Debug from a secondary .hs file
- Implement conditional breakpoints
17. That was just the tip of the iceburg, see the
Docs and Wiki for MUCH more information.
Editor's Notes
Comic Sans and Powerpoint!A beginner talk, from the perspective of someone trying to learn haskellIâm going to talk a lot about the things that I found difficult, and some of the tricks Iâve discovered. Please raise your hand if you have a better workaround and weâll bring you the mic
Multiline mode seems like the best if you donât have a fancy IDE, but Iâd rather just highlight and goThe lack of type info bugged me a lot at first. Most ML languages show type and result by default.The different syntax for GHCi was extremely frustrating when I was starting out.I found this out on stackoverflow of all places. It doesnât seem to be in the docs anywhere.
Fixed up
I added this because I hated not being able to just highlight and execute things in the REPL (a standard feature of most ML languages)Started trying to write haskell with nested functions to execute in the replThen added the wrapping syntax so I didnât need to leave on the multi-line syntax (itâs annoying)Finally, it occurred to me that I could simply prepend let and indent You can disable any of these features independently*show it*Future: Type sigs, more than one function at a time
Haskell scripts seem great for mutli-platform targets.
Because haskell is so configurable, itâs probably best to keep a separate .ghci per projectput the :set +m and :set +t to be auto run hereWe could do a whole talk on pimping your GHCi, but for now letâs focus on how to use it, for more examples check out the wiki
Monomorphism Restriction: Cannot overload a function unless you provide an explicit type sigNote that some things canât be unset, such as this particular flag
Modules can be loaded in either compiled or interpreted mode. Compiled modules can only depend on other compiled, so for now weâll be loaded everything interpreted.
Moral of the story, if youâre new and just fiddling around you should probably just stick with interpreted
Modules can be loaded in either compiled or interpreted mode. Compiled modules can only depend on other compiled, so for now weâll be loaded everything interpreted.
Info usually does the right thing for what youâre looking atPrint will show you the types of the unevaluated thunksForce will show you the result
1) Monads, but with type declarations and lots of special commands?2) Because the bindings will frequently disappear on you, it seems best to work with a temporary file outside of the repl3) You may find yourself needing to use type annotations4) A haskell thing, not ghci, but you may find yourself hitting a breakpoint in the process of debugging (especially recursive functions)5) You can hit breakpoints with the print command or force
Most of the oddities stem from laziness.
With breakpoints you can target just about anywhere, be it the name or a specific character in a fileStep sets implicit breakpoints everywhere, steplocal just within the current scope, and stepmodule just within the current module
fbreak-on-exception will break on any exception fbreak-on-error will break on uncaught exceptions
Iâve found that getting a trace where I want it can be somewhat difficult.