We are currently seeking software engineers/researchers to play a pivotal role in fulfilling our mission to make critical systems trustworthy.
Galois engineers participate in one or more projects concurrently, and specific roles vary greatly according to skills, interests, and company needs. Your role may include technology research and development, requirements gathering, implementation, testing, formal verification, infrastructure development, project leadership, and/or supporting new business development.
Skills & Requirements
- Education: Minimum of a Bachelor’s degree in computer science or equivalent. MS or PhD in CS or a related field desirable but optional, depending on specific role.
- Required Technical Expertise: Must have hands-on experience developing software and/or performing computer science research. Demonstrated expertise in aspects of software development mentioned above.
- Required General Skills: Must work well with customers, including building rapport, identifying needs, and communicating with strong written, verbal, and presentation skills. Must be highly motivated and able to self-manage to deadlines and quality goals.
Our engineers use tools such as functional programming languages (including Haskell) and formal verification techniques to design and develop advanced technologies for safety- and security-critical systems, networks, and applications. Our research areas include computer security, cyber physical systems, identity management, security risk analysis, machine learning, systems software, and networking. Engineers work in small team settings and must successfully interact with clients, partners, and other employees in a highly cooperative, collaborative, and intellectually challenging environment.
We’re looking for people who can invent, learn, think, and inspire. We reward creativity and thrive on collaboration. If you are interested, please send your cover letter and resume.
Get information on how to apply for this position.
It would be very helpful if one would typehelp(Integer)
And the haddock information are obtained directly. I'm not talking about search using hoogle and hayoo, it's rather a help about loaded library and data in the ghci (ala python interpreter).submitted by BanX
[link] [12 comments]
Do we have a decent URL library, which does not confuse URL with the more general URI, like "uri" and "network-uri" do, and does not revolve around String?submitted by nikita-volkov
[link] [24 comments]
Recently Michael Snoyman asked for help with maintaining Stackage. Dan Burton, Adam Bergmark, and I volunteered and we have been helping maintain it now for the last 3 weeks: I think it is going pretty well.
"Heads-up, we're going to bump to LTS 3.0, so if you wanted to break any APIs, last chance for LTS for 3-6 months." — Michael
Today Stackage Nightly moved from ghc-7.10.1 to 7.10.2, and we are excited to announce that we are planning to bump LTS Haskell to 3.0 hopefully by the start of next week based on current Nightly. So this week now is really the last chance for any breaking API changes for lts-3. From this point on then lts-2 will basically be frozen (like lts-1 is now) unless some exceptional updates should be needed.
This will be the first ghc version change for LTS Haskell (which is still on ghc-7.8.4) so it feels like an important milestone for LTS Haskell and Stackage.
I am trying to read org file using function readOrg from Text.Pandoc.Readers.Org. The problem is that I don't want it to include the org file header (or how is it properly called?). I mean, that I don't want the result to contain following information:#+TITLE: The Title #+AUTHOR: Author #+EMAIL: Email #+DATE: <2015-08-06> #+STARTUP: showeverything #+OPTIONS: a bunch of options ...
I tried to look at ReaderOptions but it doesn't look relevant (they are common options). I looked through the source code, but I couldn't find anything helpful. Looks like it's not possible to achieve out of box. However I might miss something, that's why I am here.
The only solution I came to is dropping first lines of file that starts with #+.submitted by deadmaya
[link] [1 comment]
I have been reading quite a lot about pattern matching, and a little bit about jump tables as well. I still have a hard time understanding how does GHC enable us to do pattern matching in O(1).
I would be grateful if someone could enlighten me on this, or direct me to a comprehensive resource on the subject.submitted by kalimeo
[link] [11 comments]
Hi, I'm relatively new to Haskell. Comming from a logic programming background, I like it mostly because of its declarativeness. As a side project I'm developing an answer set solver in Haskell. Basically a SAT-solver for logic programs. Although I like the current design, it is unfortunately a terribly slow implementation. After profiling my program I found that most of the time is spend in the following functions.COST CENTRE MODULE %time %alloc get_ng NGS 23.0 0.0 can_choose NGS 17.1 0.0 new_watch2i Types 15.3 39.7 new_watch1i Types 12.7 31.5 get_ng :: NoGoodStore -> Clause get_ng (NoGoodStore png lng _ _ counter) = if counter < length png then png!!counter else if counter < (length png) + (length lng) then lng!!(counter-length png) else error "NoGoodStore out of bounds" new_watch1i :: Clause -> Assignment -> Int -> Maybe Int new_watch1i (c,w,v) a i = if i < Vector.length c then if c!i == 0 then new_watch1i (c,w,v) a (i+1) else if i == v then new_watch1i (c,w,v) a (i+1) else if (a!i > 0 && c!i > 0) || (a!i < 0 && c!i < 0) then new_watch1i (c,w,v) a (i+1) else Just i else Nothing new_watch2i :: Clause -> Assignment -> Int -> Maybe Int new_watch2i (c,w,v) a i = if i < Vector.length c then if c!i == 0 then new_watch2i (c,w,v) a (i+1) else if i == w then new_watch2i (c,w,v) a (i+1) else if (a!i > 0 && c!i > 0) || (a!i < 0 && c!i < 0) then new_watch2i (c,w,v) a (i+1) else Just i else Nothing
You can find the complete code here https://github.com/sthiele/hasple/tree/twl Maybe you can have a look at the code and give me some tips on how to improve it.submitted by robauke
[link] [17 comments]